2012-10-18 5 views
2

예를 들어 펜스에서 파운드로 변환하려면 map 함수를 사용해야합니다. 어리석은 질문에 대해 유감이지만 .. 초보자입니다.부동 소수점으로 변환 Int : Num [Int]의 인스턴스가 없습니다.

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 

답변

8

당신이 프롬프트에서

ghci> pounds 45 

를 입력 한 것 같다. 그러나 pounds은 인수 ( Int)의 목록을 예상합니다. 정수 리터럴은 암시 적 fromInteger을 가지고 있기 때문에 당신은 GHC는 instance Num [Int]을 필요로 변환 fromInteger :: Integer -> [Int]을 찾습니다

ghci> del 45 

, 또는

ghci> pounds [45] 

를 사용해야 하나,하지만 하나를 찾을 수 없습니다 그것이보고하는 오류입니다.

2

pounds 요구에 대한 인수는 목록 Int 아닌 고립 Int 수 있습니다.

대신 pounds [45]을 시도해보십시오.

4

pounds은 목록에서만 작동하지만 번호에서는 사용했습니다.

pounds [45] 

괜찮습니다.

일반적으로 컴파일러에서 인스턴스가 누락되었다고 말하면 일반적으로 인수가 잘못된 유형이거나 누락되었음을 나타냅니다.

관련 문제