에 대한 나의 나무는 나는 또한 테스트 트리를 선언하스켈지도는 나무
data Tree a = Leaf a | Node (Tree a) (Tree a)
deriving (Show)
에 의해 정의된다.
myTree = Node (Node (Leaf 1) (Leaf 2)) (Leaf 3)
내가 원하는 것은 리프에서 작동하는 maptree f 함수를 만드는 것입니다.
다음maptree f myTree
이
Node (Node (Leaf 2) (Leaf 3)) (Leaf 4)
내 솔루션은
maptree f (Leaf a)= Leaf (f a)
maptree f (Node xl xr) = Node (maptree xl) (maptree xr)
입니다 반환하지만
Couldn't match expected type `Tree a'
against inferred type `Tree t -> Tree t'
Probable cause: `maptree' is applied to too few arguments
In the first argument of `Node', namely `(maptree xl)'
In the expression: Node (maptree xl) (maptree xr)
실패 다음과 같은 오류를, 모듈로드를 반환합니다, f x = x +1
, 더 구체적으로 일하려면 : 없음. 내가
maptree (Leaf a)= Leaf (a + 1)
maptree (Node xl xr) = Node (maptree xl) (maptree xr)
을 할 경우
그러나, 운동 않습니다.
첫 번째 기능과 두 번째 기능의 차이점을 볼 수 없습니다. 어떻게 오류가 발생합니까? 감사.
이제 작동하게되었습니다. 나는 바보 야 ...>< –
maptree f (노드 xl xr) = 노드 (maptree xl) 대신 maptree f (노드 xl xr) = 노드 (maptree xl) (maptree xr) –