17:21:20
icon

今日のお仕事終わり!

17:08:11
icon

type と type scheme で行き来できるようなもんだしな。それと同じで type とふわふわ type 用意して、ふやふわ type から type にせんと型付けできないところとふわふわ type でも型付けできるとこ用意すればええだけか

17:06:29
icon

よく考えれば System-F の instantiation / generalizing も stage 化みたいなものか

17:03:34
icon

いやでもこれ普通の declarative でも stage つければ書けるか

17:03:18
icon

つまりリテラル直書きで使う際は柔軟な推論してくれるが、一回変数とかに当てはめると型が固定化されるみたいなやつ

17:02:22
icon

具体的には、

#let x: (a: Int, b: String) = (1, "str") // ok
#let y = (1, "str")
#let z: (a: Int, b: String) = y // ng, y is inferred to `(?1: Int, ?2: String)`
みたいなやつが書ける

17:00:10
icon

bidirectional typing だと、ある範囲では柔軟な推論をしてくれるけど、ある程度になると型が固定化されるみたいな型システムも割と柔軟に書けることに気づいた