I miss lots of stuff from when I was a kid. I used to write

  elem x (_ ++ x : _)  = True
  elem _ _             = False

and think that was cool. How dumb was I?

Yeah, the Kiel Reduction Language had similarly expressive
and fun pattern matching, with subsequence matching and backtracking if the guard failed. Of course, these days, you could use view patterns for the simpler cases, but it doesn't look quite as nice:

   elem x (break (==x) -> (_, _:_)) = True
   elem _ _                         = False

and gets ugly enough to spoil the fun quickly:

   -- lookup key (_++((key,value):_)) = Just value
   lookup key (break ((==key).fst) -> (_ , (_,value):_)) = Just value
   lookup _   _                                          = Nothing

Also, view patterns don't handle match failure by an implicit
Monad, let alone MonadPlus, so one often has to insert an
explicit Maybe, and there is no backtracking:-(

Claus

-- Nostalgia isn't what it used to be [source: ?]


_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to