タイトルは簡単な質問です。
恒等関数fun x -> x
のタイプは'a -> 'a
です。
同じタイプの他の関数はあります'a -> 'a
か?
私は別のことを考えることはできません。
タイトルは簡単な質問です。
恒等関数fun x -> x
のタイプは'a -> 'a
です。
同じタイプの他の関数はあります'a -> 'a
か?
私は別のことを考えることはできません。
いいえ。
fun x -> print_endline "foo"; x;;
(failwith "bang" : 'a -> 'a);;
(fun x -> failwith "bang" : 'a -> 'a);;
(fun x -> List.hd [] : 'a -> 'a);;
let rec f (x : 'a) : 'a = f x;;
let counter = ref 0;;
(fun x -> incr counter; x);;
恒等関数は、'a -> 'a
プログラミング言語全体で唯一の住民であり、非終了を含む副作用はまったくありません。OCamlもHaskellも資格がありませんが、証明アシスタントとして使用されるいくつかの言語(この全体性が重要な場合)、特にCoq(このタイプを定式化するために使用される非叙述的なポリモーフィズムを持っています)は資格があります。