【.NET】F#について語れ【OCAML】
■ このスレッドは過去ログ倉庫に格納されています
0429デフォルトの名無しさん
2009/02/08(日) 02:00:06おっしゃるとおり、自分でもたぶん型と関数の違いがあまりわかってないと思います^^;
上の質問をした経緯です
最終的にやりたいことは、let recを用いずにYコンビネータを書きたい
しかし、F#では、次のような呼び出しは型情報が∞ループして決定できない
let fact self n = if n=1 then 1 else n * ((self self) (n-1)) in fact fact 10;;
そこで、まずは、再帰的なデータ型を定義して用い、上記のような呼び出しを通るようにしたい
(再帰的に'aを'a->'bに置き換えるような型)
しかし、再帰的なデータ型とか、あまりプログラミング経験がないので
型情報を扱うプログラムからまず取り組むことにしたが、つまづいた、とう状況です
上のプログラムですが、次のようにするとコンパイルは通ります。
let apply1 f:FUNC<int,int> = f 1;;
val apply1 : (int -> FUNC<int,int>) -> FUNC<int,int>
しかし、自分が求めた型は
val apply1 : FUNC<int,int> -> int
なのですが、なぜこうなるのかはさっぱりわかってません
■ このスレッドは過去ログ倉庫に格納されています