Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --Matthew Larson Exercise 5.1 10/14/2019
- --Parsiminous.hs
- import Prelude
- data Pair a b = Pair a b
- deriving (Eq, Show)
- instance (Ord a, Ord b) => Ord(Pair a b) where
- Pair a1 b1 <= Pair a2 b2 = a1 <= a2 && b1 <= b2
- --Matthew Larson Exercise 5.3 10/14/2019
- --BinaryTree.hs
- import Prelude
- import Data.Foldable
- data BinaryTree a
- = EmptyTree
- | Node a (BinaryTree a) (BinaryTree a) -- value leftChild rightChild
- deriving (Show)
- tree :: BinaryTree Integer
- tree = Node 3
- (Node 1
- (Node 0 EmptyTree EmptyTree)
- (Node 2 EmptyTree EmptyTree))
- (Node 5
- (Node 4 EmptyTree EmptyTree)
- (Node 6 EmptyTree EmptyTree))
- instance Foldable BinaryTree where
- foldr combiner base EmptyTree = base
- foldr combiner base (Node a left right) =
- foldr combiner (combiner a (foldr combiner base right)) left
- reverseTree :: BinaryTree a -> [a]
- reverseTree EmptyTree = []
- reverseTree (Node a left right) = reverseTree right ++ [a] ++ reverseTree left
- visit :: BinaryTree a -> [a]
- visit = foldr (:) []
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement