inright, inleft
何かと思えば直和型を作る構文のミニマルなもののようだ.Ocamlで言えば
(* トップレベルのインタラクティブセッションに打ち込むソース *) type figure = Circle of int | Rectangle of int * int;; let foo = Circle 10;; let bar = Rectangle (5, 15);; let baz = [foo; bar];; let area = function Circle r -> 3 * r * r | Rectangle (w, h) -> w * h;; List.map area baz;;
となる((どうでもいいがMLのlet
... in
... のインデントのスタンダードが分からない...))ところを,ミニマルな関数型言語の例ではよく
let foo = inright 10 in (* もしくは inr 10 *) let bar = inleft (5, 15) in let baz = [foo; bar] in let area = fun fig -> case fig of (fun r -> 3 * r * r) | (fun wh -> (fst wh) * (snd wh)) in map area baz
などと書かれる.型名とコンストラクタに名前を付ける機構を持たないわけだ.
例は超テキトーーなので正しいかどうかは知らない...