하스켈을 처음 사용하고 목록을 가져 와서 bool을 반환하는 함수를 작성하려고합니다.하스켈에서 함수가 'a'로 구성된 목록이면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
입력 목록이 'a'
만의 목록이고 그렇지 않으면 False
인 목록 인 경우 True
을 반환합니다.
이 내 추측이다 :
f :: [a] -> Bool
f ('a':[]) = True
f (x:xs) = False
이 컴파일에 실패 반환 :
Couldn't match type `a' with `Char'
`a' is a rigid type variable bound by
the type signature for f :: [a] -> Bool at charf.hs:6:1
In the pattern: 'b'
In the pattern: 'b' : []
In an equation for `f': f ('b' : []) = True
내 논리의 오류가 무엇입니까?
목록에 'Char''a '가 하나만 있어야한다는 것을 의미합니까? 이 경우 함수는'[Char] -> Bool' 타입이어야합니다. 현재 서명은 모든 유형의 목록을 허용하므로 오류가 발생합니다. – Lee
'f x = x == "a", 또는보다 간결하게'f = (== "a")'를 사용할 수 있습니다. – leftaroundabout