Mon Dec 14 2020

cumin v0.9.7

前回までのあらすじ

前回からの差分

型システム

強い型変換と自然な(弱い)型変換とを区別している. 前者は例えば文字列の "123" を整数の 123 に変換するといった, 一般に失敗しえるような変換をサポートしていて, 構文上では as キーワードで明示的に宣言する必要がある.

let s = "123";
let x = s as Int;  // String -> Int

一方で, 自然な型変換は変換が絶対に失敗しない範囲内のことしかせず, これは暗黙的に行われる.

Nat -> Int -> Float,
s -> Any

これはおよそ,

\[\mathbb N \subset \mathbb Z \subset \mathbb R\] \[\forall S, S \subset U\]

みたいなことに対応する.

let x: Nat = 1;
let z: Int = x;  // Nat -> Int
struct S {
    data: Any,
}

S { data = 1 }  // Nat(1) -> Any

Any に変換するといっても, 値にはそれとは別に型がついていて情報が失われることはない. つまり, 型 S がついた値を型 T に自然変換する場合には単に T の型に付け替えるのではなくて, ST の交わり(積集合みたいな)に付け替える. その交わりのことを S & T と書くことにする. 交差型と言っていいのかな.

そして交差型は次の通りで定義される.

s & s = s,
s & t = t & s.

Any & t = t.

Nat & Int = Int,
Nat & Float = Float,
Int & Float = Float.

Array<s> & Array<t> = Array<s & t>,
Option<s> & Option<t> = Option<s & t>.

これで以上. ただしこれで定められないようなもの(例えば String & Int)は交差型を持たない.

配列の型

\(n\) 個の値を要素にする配列を与えられた時にその型を推論する実装を述べる. 各要素の型が \(t_1, t_2, \ldots, t_n\) のとき,

(((Any & t1) & t2) & ...) & t_n

を計算する. この交差型が存在しなかったとき, 配列に型はつかない. 存在して \(t\) と分かったとき, 配列の型は Array<t> だと計算される. 例えば空配列は Array<Any> になる.

こちらはもっと簡単だが Option<t> についても全く同様.

以上から, 例えば

[None, Some(1), Some(-1)]

Array<Option<Int>> だと型付けされる.

2020年買ってよかったもの

文鳥

推定誕生日は9月の中旬頃なので, 今丁度生後三ヶ月くらい.

最近鰹節をそのまま与えて食べるようになった. 鰹節を与えること自体はタンパク質の補給源として獣医に勧めされた. 初めは食べ物として認識してもらえず, 試しに出汁をとったあとの柔らかい状態で与えると食べてくれたのだが, やがて食べなくなり, 今は逆に茹でずにそのまま与えると食べるようになってくれた.

手乗り文鳥という言葉があるのが不思議なくらいに, 手の上に必ず乗ってくる. つまり手乗りが当たり前のものに手乗りと冠するのが不思議なのだ.

シードからペレットへの切り替えもやはり勧められた. この切り替えは難儀してる. 混ぜて与えるとシードだけ食べて, ペレットは避けて捨ててしまう. 別皿でペレットだけ盛ったものを与えるほうがまだたまに食べてくれる.

タイガークラウン へら・スパチュラ

結局ゴムベラが便利だね

山善(YAMAZEN) スライド本棚 幅120cm スライド3列

とりあえず良い. 良いところはスライドなところ, 悪いのもスライドなところ. スライド自体が妙に引っかかったるとか(スライドにコツがいる), 奥の棚であって, ちょうど手前のスライドの境目の位置にある本はどう手前を動かしても取り出しにくいだとか.

何にしても部屋が少し片付いた.

新富士バーナー パワートーチ ガスバーナー

なんでも, 炙れば美味い. チーズ乗っけて炙るとか, スーパーのお寿司とか.

REVUE ML

中古一万円で買ったフィルムカメラ. 良いように言えばフィルムがもったいないから大事にシャッターを切ることになる. 悪いように言えば滅多に使わなくなって勿体ない.

iPad

買って数ヶ月してちょうど新しい2020年モデルが出てしまった. これは2018年モデル.

カメラは間違いなく駄目. 10年前の写メールみたいな画質. タブレットで写真撮ろうなんて思わないからいいんだけど.

Kindleとお絵かきのために使ってる. 満足してる. SSHクライアントのアプリとBluetoothキーボード繋げば割とパソコンになる. 出掛け先にノートパソコン持ってくくらいなら, これでいい.

2020年読んで良かった本

2019年以前に読んでた漫画の続刊は除く.

漂流教室

95点

めぞん一刻

この頃の高橋留美子大好き

ご飯は私を裏切らない

一巻で終わっちゃったのが残念

リレーショナルデータベース入門―データモデル・SQL・管理システム

関係代数から初めてRDBに入門できる。 いきなり MySQL のコマンドを書き並べただけの入門書じゃなくて中身の理論からやってくれるので, 本当の意味のRDBへの入門書.

ショートショートショートさん

全力の変顔が賛否両論

極めてかもしだ

100点

やさしいセカイのつくりかた

80点

マイナス(山崎紗也夏)

80点

上伊那ぼたん、酔へる姿は百合の花 

おっさんの百合。80点

元カノに幻想を抱くなバーカ

勢いの百合。90点

月とすっぴん

平和な百合。80点

ルベーグ積分から確率論

結局厳密に確率論やるには測度論から入るのが今確立されてる中では一番まともで, ルベーグ積分からやり直すしかない. この本一冊でとりあえず一通りがやり直せる.

2020年観て良かった映画・アニメ

今年初めて見たものに限る

ラブ&ポップ

庵野秀明の初実写映画。85点

いつだってやめられる

三部作。映画というよりはドラマくらいのクオリティ(見下げた言い方だが)

映画 賭ケグルイ

私が単にこの監督が好き。一般的には絶対好評なわけがないタイプの映画。75点

映像研には手を出すな

賭ケグルイと同じ監督の映画。この人はちゃんと原作を研究した上で拡張を目指すから好きだ。70点

ファイトクラブ

基礎教養

原子怪獣現わる

これも基礎教養。公平に点数を付けるなら20点くらいだけど、そういう問題じゃない

花とアリス殺人事件

苦しみ度合い30%くらいの程よい百合。 絵については慣れろ。そういうところで文句を言うな

ヒプノシスマイク

今一番面白い。単純に世界観が面白い。キャラクターだけで売ってるわけじゃないのが、私でも楽しめる理由だと思う

魔女見習いをさがして

映画単体としては少しどうかな、楽しめないかなと思ってしまうけど、そういう問題ではない。 これは東映からおジャ魔女ファンへのメッセージなので。

老人Z

面白くないわけがない。 アニメーションがいいしキャラクターがいい。ロボットアニメへのエスプリになってるのも面白い

ふしぎの海のナディア

前半と後半とで全然違うので驚いた。見れば見るほどにラピュタ

かくしごと

久米田康治!100点