굿 데이,나무 유형 간 변환 (하스켈)
학교 과제물을 작성하려면 매우 간단한 프로그램을 작성해야합니다. 한 유형에서 다른 유형으로 나무를 변환해야합니다. 그러나 나는 강의에 참석할 수 없어 내 코드가 무엇이 잘못되었는지 전혀 몰랐기 때문에 난처한 상황에 처해있다. 할당은 RoseTree에 형 Tree1a에서 나무를 변환하는 것입니다 :
data RoseTree = RoseNode String [RoseTree]
data Tree1a = Leaf1a Number | Node1a Number Tree1a Tree1a
tree = Node1a 1 (Leaf1a 2)
(Node1a 3 (Leaf1a 4)
(Leaf1a 5))
pp1a :: Tree1a -> RoseTree
pp1a (Leaf1a n) = RoseNode (show n) []
pp1a (Node1a n left right) = RoseNode (show n) [pp1a left, pp1a right]
(. 수 교사에 의해 주어진 라이브러리에 정의되어 있지만, 여기에 문제가되지 않습니다)하지만이 작동하지 않습니다 showTree (pp1a tree)를 실행하면 아무 일도 일어나지 않고 그냥 영원히 실행됩니다 (showTree는 선생님이 지정한 일부 라이브러리에서 RoseTree에 정의 된 인쇄 함수입니다).
오류는 다른 곳에서 발생해야합니다. 주어진 테스트 트리가 무한 재귀를 일으켜서는 안됩니다 (다른 유한 트리도 마찬가지입니다). – Sarah