go-fringe.go: Language change: `closed' function on channels has gone.
[fringe] / haskell-fringe.hs
index 78c6362..f7aa711 100644 (file)
@@ -1,13 +1,13 @@
--- -*-haskell-*-
---
--- Haskell implementation of a `same-fringe' solver.
+--- -*-haskell-*-
+---
+--- Haskell implementation of a `same-fringe' solver.
 
 import IO
 import System
 import Monad
 
 -----------------------------------------------------------------------------
--- Parser combinators.
+--- Parser combinators.
 
 -- A very simple parser monad.
 newtype Parser t a = Parser { runparse :: [t] -> Either String (a, [t]) }
@@ -56,14 +56,14 @@ eof = do
     _ -> fail "trailing junk"
 
 -----------------------------------------------------------------------------
--- Tree data type.
+--- Tree data type.
 
-data Tree a = Leaf | Node (Tree a, a, Tree a) deriving (Show)
+data Tree a = Leaf | Node (Tree a) a (Tree a) deriving (Show)
 
 -- Return the elements inorder, as a list.
 fringe t = gather t [] where
   gather Leaf ns = ns
-  gather (Node (l, x, r)) ns = gather l (x : gather r ns)
+  gather (Node l x r) ns = gather l (x : gather r ns)
 
 -- Answer whether two trees have the same fringe.
 sameFringe t tt = fringe t == fringe tt -- trivial!
@@ -81,11 +81,11 @@ parseTree cs = parse cs $ do t <- tree; eof; return t
     case r of
       Just '(' -> do
         step; left <- tree; c <- anytok "no data"; right <- tree; delim ')'
-        return $ Node (left, c, right)
+        return $ Node left c right
       _ -> return Leaf
 
 -----------------------------------------------------------------------------
--- Main program.
+--- Main program.
 
 -- Report MSG as an error and quit.
 bail msg = do