You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
UTF-8 encoded string: UTF-8 hell 判ってない人特有の fantasy
byte と bytestring: 別に自分でモジュール作ればよろしい
Immutable strings: 4.02 で半分実現される
Non hard-coded [] and (::)(_, _) in the syntax: 下で議論
Types and type definitions
type not rec t = t は Core に既にあるし type _t = t;; type t = _t;; で無問題。
Constructors as functions: leopard で解決済
type t = T of int * bool と type t = T of (int * bool) を一緒にする: 内部表現の都合上、無理。むしろ文法を変えて違いを明確にすべき: type t = T (int, bool) と type t = T (int * bool) のように。ただし backward compatible で無くなる
let f : 'a -> 'a = fun x -> x + 1 をやめる。 Type constraint と type annotation の違いが判っていない人が言いそうなこと。型変数のスコープなどは綺麗に考える必要があると思われるが簡単な問題ではない
Views : I hate views. Views are evil.
Expressions and value definitions
fun x x -> x を受け付けるべきではない: その通り
match e with p -> true | _ -> false の略記としての <expr> match? <pattern> : leopard の pattern guard で大体同機能ある
<pattern> as x を拡張して <pattern> as <pattern> に。 And pattern …あまり欲いと思ったことがないし pattern guard でよいのでは
Inlined let: let! f arg1 ... argn = ...: いらん
do .. done の代りに begin .. end (必須)にする: 必須なところが余計混乱を招く。不可。閉じるのがいやなら leopard の do: がある