Or even shorter:

subst e l = concatMap $ \x->if x==e then l else [x]

I kinda like the list comprehension version too

subst e l1 l2 = [ r | x <- l2, r <- if x==e then l1 else [x] ]


On Sep 18, 2006, at 10:54 , Jón Fairbairn wrote:

Andrea Rossato <[EMAIL PROTECTED]> writes:

On Mon, Sep 18, 2006 at 12:42:59PM +0100, Jón Fairbairn wrote:
And if you do that, you can write it like this:

   subst e l'
       = concat . map subst_elem
         where subst_elem x
                   | x == e = l'
                   | otherwise = [x]

Pretty. Just to many keystrokes.

Keystrokes? Learn to touchtype!

This should take two keystrokes less, probably:

subst e l [] = []
subst e l (x:xs) = if x == e then l ++ xs else x : subst e l xs

but if you want short, do this:

subst e l' = concat.map (\x->if x==e then l' else [x])

which beats yours by twenty seven characters and one bug ;-P

-- Jón Fairbairn [EMAIL PROTECTED] http://www.chaos.org.uk/~jf/Stuff-I-dont-want.html (updated 2006-09-13)

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

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

Reply via email to