■
関数を宣言するときに型パラメータを暗黙に指定させてしまうことも出来るようだ。
Fixpoint length {X:Type} (l:list X) : nat := match l with | nil => 0 | cons h t => S (length'' t) end.
{X:Type}のように中括弧で宣言すると型パラメータは実際に書かなくてよくなる。
Eval simpl in length [1;2;3]. = 3 : nat
関数を宣言するときに型パラメータを暗黙に指定させてしまうことも出来るようだ。
Fixpoint length {X:Type} (l:list X) : nat := match l with | nil => 0 | cons h t => S (length'' t) end.
{X:Type}のように中括弧で宣言すると型パラメータは実際に書かなくてよくなる。
Eval simpl in length [1;2;3]. = 3 : nat