ランダムなメモ:後で整理する
- 立体視が重要
- だが、複数の視点を紹介する時間がない
- 上江州流が中心
- 関数概念
- 「集合と関係グラフ」ベース、非常に静的
- 記号と計算(記号の書き換え)ベース
- 装置メタファー、直感的
- 矢印ベース、圏論へ
- 関数計算の基本演算
- 適用中心
- 結合(合成)中心
- 高階関数の考え方
- 数学では
- 物理では
- コンピュータでは
- 「一番よく使う記号は省略する」の原則
- 計算と計算結果、値とはなにか
- 1 + 2 = 3 だが、 3 = 1 + 2 は?
- 式は値か?
- 定数は変数か?
- 変数の束縛環境(値束縛)
- 閉包ってなんだぁ??
- 実行と評価、それと結果、それと無限走行
- 「ピュアすぎると嫌われる」
- 「単純すぎるとわかりにくい」
- 物と働き、データと操作の二元論
- どこまでがハードウェア、どこからがソフトウェア
- 個別算術ハードウェアと万能算術機械
- プログラムは物であり働きである 二面性
- 二面的だが存在ブツとしてはひとつ、これが謎
- 自由、束縛を構文的に区別する
- 記号表現より絵のほうが合理的なときもある
- グラウンドな項、閉じた式
不純ラムダ計算とは:
- 多変数(多引数)を許す
- 型付きである、が暗黙の宣言で型の明示をサボル
- タプル構成子を持つ
- タプルからの成分取り出し(ドットやブラケット)はプリミティブ
- 定数(リテラル)を持つ
- 組み込み関数、演算子を持つ
- 制御構造を持つ
- 変数の辞書式順序を利用する
- 環境のチェーン、したがって入れ子の閉包を許す
普通のプログラミング言語と違う点は、多引数と多値の解釈:
- 多引数をタプル1引数だと考える
- 名前付き引数は、変数タプルへの値タプルからの同時代入で実現されると解釈
- タプル戻り値は、多引数関数にそのまま代入できると考える。