2017-11-12 8 views
-3
plus1 :: [Integer] -> [Integer] -> [Integer] 
plus1 (x:xs) remain 
    | (x==0) && (remain==1) = [1] ++ (plus1 xs (remain-1)) 
    | (x==1) && (remain==1) = [0] ++ (plus1 xs remain) 
    | (x==0) && (remain==0) = [0] ++ (plus1 xs 0) 
    | (x==1) && (remain==0) = [1] ++ (plus1 xs 0) 
    | otherwise = [] 

발생 (NUM [정수]) '의 두 번째 인수 리터럴에서'1 '없음 인스턴스 (NUM [정수]) 없음 인스턴스 • 리터럴에서 '1'

• 발생한 (==) ', 즉'는 식 1 '

번째 인수

'(& &) ", 즉"(유지 == 1) '

을 (X == 0) & & (남은 == 1)

+3

인 경우 'remaining'은'[Integer] '로 표시되지만'== '와'1 '을 비교하면'Integer'가됩니다. 아마도'remain'의 타입 시그니처는'plus1 :: [Integer] -> Integer -> [Integer]'로 의도 되었습니까? –

+0

내 모든 고마워,이 질문에 대한 답변을하므로 –

답변

0

귀하의 유형 서명에 따르면 remain은 에서 1과는 Integer 인 것으로 표시됩니다. 형식 서명이 plus1 :: [Integer] -> Integer -> [Integer]

+0

Mateusz의 의견에서 끌어 와서 감사합니다. –