При чтении отредактированного от Haskell for Great Good я обнаружил следующую ситуацию:
treeInsert :: (Ord a) => a -> Tree a -> Tree a
treeInsert x EmptyTree = singleton x
treeInsert x (Node a left right)
| x == a = Node x left right
| x < a = Node a (treeInsert x left) right
| x > a = Node a left (treeInsert x right)
Не лучше ли было бы производительности, если бы мы повторно использовали данное дерево, когда x == a
?
treeInsert :: (Ord a) => a -> Tree a -> Tree a
treeInsert x EmptyTree = singleton x
treeInsert x [email protected](Node a left right)
| x == a = all
| x < a = Node a (treeInsert x left) right
| otherwise = Node a left (treeInsert x right)
В реальной кодировке, что мне делать? Существуют ли какие-либо недостатки при возврате одного и того же?