関数について常に読んでいます:
fun constantly k a = k
しかし、私はそれを扱う方法を理解していません。私はそのように試しました:
val a = constantly 10;
stdIn:32.5-32.28 Warning: type vars not generalized because of
value restriction are instantiated to dummy types (X1,X2,...)
val a = fn : ?.X1 -> int * int -> int
それはそのように動作します:
val a = constantly 10 ();
val a : int = 10
しかし、そうではありません:
val a = constantly 10;
a ();
stdIn:36.1-36.5 Error: operator and operand don't agree [tycon mismatch]
operator domain: ?.X1
operand: unit
in expression:
a ()
その機能を理解するのを手伝ってくれる人はいますか?