module RepMin1 where ---------------------- Tree ------------------------- data Tree = Tree_Leaf Int| Tree_Bin Tree Tree deriving Show -- semantic domains type T_Tree = Int ->(Tree,Int) -- funcs sem_Tree_Leaf ::Int -> T_Tree sem_Tree_Leaf int lhs_minval = ( (Leaf lhs_minval), int ) sem_Tree_Bin :: T_Tree -> T_Tree -> T_Tree sem_Tree_Bin left right lhs_minval = let{ ( left_res, left_m ) = left lhs_minval; ( right_res, right_m ) = right lhs_minval}in ( (Bin left_res right_res), (left_m `min` right_m) ) ---------------------- Root ------------------------- data Root = Root_Root Tree deriving Show -- semantic domains type T_Root = Tree -- funcs sem_Root_Root :: T_Tree -> T_Root sem_Root_Root tree = let{ ( tree_res, tree_m ) = tree tree_m}in tree_res