# Syntax error using where with guards.

3 messages
Open this post in threaded view
|

## Syntax error using where with guards.

 I was trying to implement a functional version of numerator/denominator simplifications of symbols. I came up with:     simplify :: (Eq o, Ord o) => [o] -> [o] -> ([o], [o])     simplify [] bs = ([], bs)     simplify ts [] = (ts, [])     simplify (x:xs) (y:ys)       | x == y    = simplify xs ys       | x < y     =           ([x] ++ (fst \$ simplify xs (y:ys)), snd \$ simplify xs (y:ys))       | otherwise =           (fst r, [y] ++ snd r) where r = simplify (x:xs) ys     simplify2 :: (Eq o, Ord o) => [o] -> [o] -> ([o], [o])     simplify2 a b = simplify (sort a) (sort b)     -- sort not shown here In the second guard of the simplify function the expression 'simplify xs (y:ys)' is repeated.  I would like to write instead:     simplify (x:xs) (y:ys)       | x == y    = simplify xs ys       | x < y     =           ([x] ++ fst r, snd r) where r = simplify xs (y:ys)       | otherwise =           (fst r, [y] ++ snd r) where r = simplify (x:xs) ys But doing so is parse error:     \$ ghc xoutil/dim/meta.hs     [1 of 1] Compiling Meta             ( xoutil/dim/meta.hs, xoutil/dim/meta.o )     xoutil/dim/meta.hs:19:3: parse error on input ‘|’ I'm using: ghc 7.10.3. Any ideas of why this is a syntax error? Best regards, Manuel. _______________________________________________ Beginners mailing list [hidden email] http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners