HtDP
I. Fixed-Size Data
- デザインレシピ
- https://htdp.org/2022-8-7/Book/part_one.html#(part._sec~3adesign-func)
- プログラムを作る手順
- 定数を洗い出す
- データを定義する(実装ではない)
- 必要な関数を定義する(実装ではない)
- 目的・シグネチャを定義する
- wish listをつくる 5. 例を考える
- テストの形で表現 6. 実装する 7. テストで確かめる
- I.4. Intervals, Enumerations, and Itemizations
- 条件を使う上での3つの分類を提示
- enumerations(列挙):
enum
- 有効な値が有限個存在して、そのうちのどれかを選ぶ
- intervals(区間):
- 有効な値が無限個存在するので、enumerationsではうまくいかない
- $0 \leq x \leq 1$を満たす$x \in \mathbb{R}$は無限にある
- そこで、有限個の区間を設定して、無限にある値がいずれかの区間に属するようにする
- テストは区間の中と、境界で行う
- 同値分析だっけ?情報処理技術者試験でやった
- 有効な値が無限個存在するので、enumerationsではうまくいかない
- itemizations(箇条書き…ではない気がするな):
- enumerationsとintervalsの組み合わせ
NorF
は#false
か、Number
(interval)に属する数値- Rustの
Option<T>
はNone
というたった一つの値かSome(T)
という無限種類ある値のいずれか
- enumerationsとintervalsの組み合わせ
- enumerations(列挙):
- step4のtemplateで
cond
を使う - 4.7
- Finite State Machineの導入
- 条件を使う上での3つの分類を提示
- 5.
- 構造体 structure type は以下の関数を定義する
- constructor
- selector (getter)
- structure predicate (e.g.
posn?
)
- 構造体 structure type は以下の関数を定義する
Backlinks
プログラミングの基礎
[[OCaml]]でプログラミングを学ぶ本。[[HtDP]]のDesign Recipeという方法論を踏襲している。[[Modern Compiler Implementation in ML]]でOCamlを使うので読んでみた。