我需要使用map
函数来获得pence到磅的转换。
抱歉这个愚蠢的问题..但我是初学者。
del :: Int -> Float
del x = ( fromIntegral x ) / 100
pounds :: [Int] -> [Float]
pounds = map del
我收到此错误..
*Main> pounds 45
<interactive>:90:8:
No instance for (Num [Int])
arising from the literal `45'
Possible fix: add an instance declaration for (Num [Int])
In the first argument of `pounds', namely `45'
In the expression: pounds 45
In an equation for it': it = pounds 45
答案 0 :(得分:8)
好像你打字了
ghci> pounds 45
在提示符下。但是pounds
期望一个列表(Int
)作为其参数。你应该使用
ghci> del 45
那里,或
ghci> pounds [45]
由于整数文字具有隐式fromInteger
,因此GHC会尝试查找转换fromInteger :: Integer -> [Int]
,这需要instance Num [Int]
,但它无法找到一个,{&#39} ; s报告的错误。
答案 1 :(得分:4)
pounds
仅适用于列表,但您在数字上使用它。
pounds [45]
会正常工作。
通常当编译器说它缺少一个实例时,通常意味着你的参数是错误的类型或缺失。
答案 2 :(得分:2)
pounds
的论据必须是Int
的列表,而不是孤立的Int
。
尝试改为pounds [45]
。