haskell-ja > Archives > 2015/08/26

2015/08/26 04:11:11 UTC[1..100]>>=pen
#
先日とある勉強会懇親会で「1 + 1.0」のエラーの話が出たんですが今「main = print $ 1 + 1.0」を ghci, runghc で試したらエラーなく 2.0 が出ました。ghc-7.10.2 です。以前はエラーが出てたんでしたっけ。
2015/08/26 12:26:27 UTCnobsun
#
整数リテラルにはfromInteger が暗黙に付くようになってからはエラーにはならないと.少くともHaskell 98ではエラーにならないはず。
2015/08/26 12:39:00 UTCnobsun
#
NumクラスのメソッドにfromIntegerがあるかどうかで判断できそう。
2015/08/26 12:46:22 UTCnobsun
#
.@cutsea110 さきほどの話. P(n) はあくまでも引数nに依存する性質であればいいだけだと思う。
2015/08/26 13:29:12 UTC[1..100]>>=pen
#
近づいたので再掲。8月27日(木)「平日夜にすごいH本をちょびちょび読む会 18回目」(定員4名) #Hちょびよみ http://hchobi.connpass.com/event/18548/ いのちをだいじにしながら 人が死なない
2015/08/26 13:53:27 UTCうんの
#
1 + 1.0 が型検査でエラーにならないのは、default (Integer, Double) のおかげなんではないでしょうか。(fromInteger が暗黙に付くと同義かもしれませんが、型検査(型推論)器が default を考慮するから)
#
Num クラスメソッドに fromInteger があっても、default () とすると、1 + 1.0 はエラーするし…
#
#などと書きましたが、ここに書き込んでみたかっただけです。みなさん、こんにちは。
2015/08/26 22:25:47 UTCnobsun
#
はい,fromInteger は整数リテラルを多相にするために用意されています。
#
default 指定は数値リテラルだけを含む式で型が曖昧になるのを防ぐためのものです。
#
default () としたときに出るエラーは型が一致しないというエラーではなく,型が曖昧だというエラーですよね。