WHAT'S NEW
CONTENTS
お気楽 OCaml プログラミング入門
CONTENTS
- 2020/06/21 はじめに
OCaml の特徴、プログラムの実行、簡単なベンチマーク、Enjoy Programming!!
- 2020/06/21 OCaml の基礎知識
使ってみよう、整数と実数、算術演算子、文字と文字列、比較演算子、論理演算子、条件分岐、変数、組 (tuple)、関数、局所変数と大域変数、問題
- 2020/06/21 再帰定義
再帰定義の基本、再帰定義のポイント、累乗の計算、累乗の高速化、フィボナッチ関数、ユークリッドの互除法、組み合わせの数、ハノイの塔、unit 型と逐次実行、問題
- 2020/06/21 相互再帰と末尾再帰
相互再帰、末尾再帰、フィボナッチ関数の高速化、問題
- 2020/06/21 高階関数
関数を引数にとる関数、多相性、匿名関数とカリー化、問題
- 2020/06/21 リスト
リストの構造、リストの構成法、リストの合成と分解、再帰定義によるリスト操作、リストの連結、リストの反転、リストの探索、問題
- 2020/06/28 パターンマッチング
match 式、function 文、リストのパターンマッチング、問題
- 2020/06/28 高階関数 (2)
マッピング、フィルター、畳み込み、畳み込みの使用例、問題
- 2020/06/28 ソート
挿入ソート、クイックソート、クイックソートの弱点、問題
- 2020/06/28 レキシカルスコープとクロージャ
レキシカルスコープ、レキシカルスコープと局所関数、クロージャ、連想リスト、ダイナミックスコープ、関数の合成、問題
- 2020/06/28 順列と組み合わせ
順列の生成、順列をリストに格納する、組み合わせの生成、組み合わせをリストに格納する、問題
- 2020/06/28 データ型の定義
ヴァリアントの定義、ヴァリアントの生成、パターンマッチング、option 型、再帰的なデータ型、連想リスト、レコードの定義、レコードの生成、レコードのパターンマッチング、多相的なレコード、問題
- 2020/06/28 ソート (2)
マージソート、リストのマージ、マージソートの実装、問題
- 2020/06/28 例外
例外の定義、例外の送出、例外の捕捉、問題
- 2020/06/28 書き換え可能なデータ型
配列、配列の操作関数、参照、書き換え可能なレコード、多相性の制限、繰り返し、FizuuBuzz 問題、パスカルの三角形、数値積分
- 2020/07/05 ファイル入出力
標準入出力、ファイルのオープンとクローズ、input_char と output_char、ファイルの書き込み、問題
- 2020/07/05 バックトラック法
小町算、データ型の定義、式の生成、式の計算、実行結果、8クイーン、プログラムの作成、実行結果、8クイーンの高速化
- 2020/07/05 モジュール
スタック、スタックの定義、モジュールの定義、module による実装、シグネチャとデータ抽象、mli ファイルの定義、参照型を使ったスタックの実装、キュー、キューの実装、問題
- 2020/07/12 有理数
有理数の定義、有理数の生成、算術演算子の定義、比較演算子の定義、データ型の変換、実行例、モジュールの作成、小町分数 (1) (2)、単位分数の和、Four Fours、数式のパターン、データ型の定義、数式の計算、数式の生成、実行結果、補足:モジュール Num の使い方
- 2020/07/12 ファンクタ
二分探索木、木構造、二分木、二分木の実装、データの探索、データの挿入、データの削除、二分木の巡回、実行例、プログラムリスト、ファンクタの定義、シグネチャの定義、プログラムの作成、実行例、問題
- 2020/07/12 ファンクタ (2)
ファンクタのシグネチャ、with type、Map と Set、プログラムリスト、問題
- 2020/07/12 ハッシュ法
ハッシュ法とは?、プログラムの作成、ハッシュ関数の作成、実行例、ハッシュ法の長所と短所、Hashtbl の使い方、参考文献、プログラムリスト
- 2020/07/12 オブジェクト指向
オブジェクト指向とは?、クラスとインスタンス、メソッド、OCaml のクラス、インスタンス変数とメソッドの定義、オブジェクトの初期化、多相クラス、private メソッド、オブジェクトの型、OCaml の部分型、ダック・タイピング、辞書 (mutable) の実装、プログラムの作成、実行例
- 2020/07/12 集合
集合の基本操作、ファンクタの定義、union、intersection、difference、実行例、オブジェクト指向による実装、クラスの定義、バイナリメソッド、オブジェクトのコピー、実行例、プログラムリスト、問題
- 2020/07/19 継承
継承とは?、単一継承と多重継承、継承の仕組み、単一継承の使い方、オーバーライド、集合 (2)、initializer、抽象メソッドと抽象クラス、型変換、問題
- 2020/07/19 多重継承と Mix-in
多重継承の使い方、多重継承の問題点、Mix-in、enumerable、多相メソッド、リストクラス、実行例、クラスの関係、継承関係は必ずしも部分型にはならない、問題
- 2020/07/19 クラス型
クラス型の宣言、クラス型に名前を付ける、クラス型による型指定、クラス内の局所変数と局所関数、問題
- 2020/07/19 集合 (3)
モジュール内でクラスを定義する、オブジェクトを格納する集合、constraint、実行例、ファンクタ MakeSet でオブジェクトを格納する、問題
- 2020/07/19 経路の探索
グラフ、隣接行列と隣接リスト、バックトラックによる探索、幅優先探索、経路の管理、幅優先探索のプログラム、探索の一般化、反復深化、反復深化のプログラム
- 2020/07/19 パズルの解法 (1)
覆面算、魔方陣、対称解の排除、騎士の巡歴、マスターマインド、推測アルゴリズム、プログラムの作成、何回であたるか、問題
- 2020/07/26 パズルの解法 (2)
スライドパズルの説明、幅優先探索による解法、実行結果、双方向探索による高速化、最長手数の求め方、問題
- 2020/07/26 パズルの解法 (3)
反復深化による解法、下限値枝刈り法、下限値枝刈り法のプログラム、プログラムリスト、問題
- 2020/07/26 組み合わせの生成 (2)
ビット演算子、プログラムの作成、組み合わせに番号をつける方法、組み合わせを番号に変換、番号を組み合わせに変換、ちょっと便利なビット操作、ビットが 1 の個数を求める
- 2020/07/26 ラベル付き引数とオプション引数
ラベル付き引数、引数の順番、オプション引数、問題
- 2020/07/26 多相ヴァリアント
多相ヴァリアントの基本、多相ヴァリアントのデータ型、関数定義の拡張、問題
- 2020/07/26 メモ化と遅延評価
たらいまわし関数、メモ化による高速化、メモ化関数、遅延評価による高速化、問題
- 2020/07/26 遅延ストリーム
遅延ストリームの構造、遅延ストリームの生成、遅延ストリームの変換、遅延ストリームの操作関数、遅延ストリームの連結
- 2020/08/02 遅延ストリーム (2)
高階関数、マップ関数の便利な使い方、stream_flatmap、stream_take_while と stream_drop_while、組 (pair) を生成するストリーム、集合演算、ハミングの問題、順列の生成、8クイーンの解法、素数の生成、より高速な方法、双子素数
- 2020/08/02 継続渡しスタイル
継続とは?、継続渡しスタイルとは?、再帰呼び出しと継続渡しスタイル、二重再帰と継続渡しスタイル、CPS の便利な使い方、二分木の巡回を CPS で実装、二分木と遅延ストリーム、遅延ストリームを使わない方法
- 2020/08/02 便利なリスト操作関数
iota と tabulate、リストの分割、リストの置換、any と every、マッピング、リスト操作の一般化、解きほぐし (逆畳み込み)、問題
- 2020/08/02 便利なベクタ操作関数
データの探索、マッピング、畳み込み、イテレータ、リストとベクタの比較、二分探索、挿入ソート、クイックソート、問題
Yet Another OCaml Problems
参考文献, URL
●参考文献
- 五十嵐淳, 『プログラミング in OCaml』, 技術評論社, 2007
●参考 URL
- OCaml - OCaml, (本家)
- OCamlチュートリアル - OCaml, (本家, 日本語訳)
- Objective Caml 入門 (PDF), (五十嵐淳さん)
- 数理科学的バグ撲滅方法論のすすめ | 日経クロステック, (住井英二郎さん)
- OCaml.jp, "Objective Caml に関する情報を集めたコミュニティサイト" とのことです。
権利・免責事項など
『お気楽 OCaml プログラミング入門』の著作権は筆者「広井誠 (Makoto Hiroi)」が保持します。無断使用や無断転載は禁止いたします。お気楽 OCaml プログラミング入門で作成したプログラムはフリーソフトウェアとします。ご自由にお使いください。プログラムの改造や配布もご自由にどうぞ。その際は、出典を明記してくださるようお願いいたします。
ただし、これらのプログラムは無保証であり、使用したことにより生じた損害について、作者「広井誠 (Makoto Hiroi)」は一切の責任を負いません。また、これらのプログラムを販売することで利益を得るといった商行為は禁止いたします。
Copyright (C) 2008-2020 Makoto Hiroi
All rights reserved.