関数型プログラミング言語Haskell Part17
■ このスレッドは過去ログ倉庫に格納されています
0805デフォルトの名無しさん
2012/03/04(日) 01:04:30.24> などはダメですね
さっきも言ったが、推論できない曖昧性があるとエラーが発生する
*.hs ファイル内で 1 と記述しただけ(リテラル)だと、
それが Integer なのか Int なのかハッキリしない
だからリテラルの場合は
print $ typeOf (1 :: Int)
print $ typeOf ((1,2,3) :: (Int, Integer, Double))
などと型を明示してやるといい
(文字列リテラルは、普通の場合に限れば型が特定できる)
ghci 上では、1 というリテラルは、
型が特定されない間は (Num a) => a という型変数で表現されて、
型を特定しないといけなくなると Integer 型に勝手に推論される
いずれにしても、Haskell 初心者なら、
printfデバッグ的に型情報を調べたい欲求はこらえてくれ
その必要が無いような言語設計になってるから
コンパイルが通るソースなら、落ち着いてゆっくり上から順に見ていけば、
末端に到達した時にちゃんと全ての型が正しく推論できるようになっている
型推論の練習をしてるんだという意識でソースを読むことを勧める
■ このスレッドは過去ログ倉庫に格納されています