2

mapこの関数を使用して、たとえばペンスからポンドへの変換を取得する必要があります。ばかげた質問でごめんなさい..でも私は初心者です。

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
4

3 に答える 3

8

入力したようです

ghci> pounds 45

プロンプトで。ただし、引数としてpounds(の)リストが必要です。Intどちらかを使用する必要があります

ghci> del 45

そこに、または

ghci> pounds [45]

整数リテラルには暗黙のが含まれているfromIntegerため、GHCは変換を見つけようとしますfromInteger :: Integer -> [Int]。これにはが必要ですが、instance Num [Int]見つけることができません。これがエラーです。

于 2012-10-18T21:28:26.823 に答える
4

poundsリストでのみ機能しますが、番号で使用しました。

pounds [45]

うまくいくでしょう。

通常、コンパイラがインスタンスが欠落していると言った場合、それは通常、引数が間違ったタイプであるか欠落していることを意味します。

于 2012-10-18T21:29:24.470 に答える
2

の引数は、孤立したのではなく、のリストpoundsある必要があります。IntInt

pounds [45]代わりにやってみてください。

于 2012-10-18T21:27:59.977 に答える