Programming in Haskell (2e) 8 장 데이터 Tree
이진 검색 기능 occurs
를 정의운영자 비교 Prelude.compare
data Tree a = Leaf a | Node (Tree a) a (Tree a)
occurs :: Ord a => a -> Tree a -> Bool
occurs x (Leaf y) = x == y
occurs x (Node l y r) | x == y = True
| x < y = occurs x l
| otherwise = occurs x r
운동 3 Prelude.compare
및 질문 occurs
재정의하라는
왜이 새로운 정의가 원래 버전보다 효율적입니까?
여기 내 정의 제공 :
occurs :: Ord a => a -> Tree a -> Bool
occurs x (Leaf y) = x == y
occurs x (Node l y r) = case compare x y of EQ -> True
LT -> occurs x l
GT -> occurs x r
을하지만 효율성 향상을 볼 수 없습니다. 있어요?
내가 잘못 배우는가?
'트리 문자열 '을 고려하십시오. 트리의 모든 문자열에 길이가 N 인 공통 접두어를 붙이십시오. 이제 두 경우 모두 개별 문자 비교를 세십시오. –