このstackoverflowの回答をghciでチェックしようとしたところ、次のエラーが発生しました。
> import Data.List
> let m = head . sort
> m [2,3,4]
<interactive>:5:4:
No instance for (Num ()) arising from the literal `2'
Possible fix: add an instance declaration for (Num ())
In the expression: 2
In the first argument of `m', namely `[2, 3, 4]'
In the expression: m [2, 3, 4]
残念ながら、書かれた haskell ファイルでエラーを再現することはできません:
-- file.hs
import Data.List
main = do
let m = head . sort
putStrLn $ show $ m [2,3,4]
このファイルを実行するとrunhaskell file.hs
、期待値が得られます2
。ghci セッションでの間違いは何ですか?
編集:関数m
にはghciの奇妙なタイプがあることに注意しました:
> import Data.List
> let m = head . sort
> :t m
m :: [()] -> ()
これはなぜですか?それはタイプを持っているべきではありませんOrd a => [a] -> a
か?Forsort
とhead
私は期待されるタイプを取得します:
> :t sort
sort :: Ord a => [a] -> [a]
> :t head
head :: [a] -> a