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

などと書かれる.型名とコンストラクタに名前を付ける機構を持たないわけだ.
例は超テキトーーなので正しいかどうかは知らない...