
18 Sep
2006
18 Sep
'06
4:53 p.m.
On Mon, Sep 18, 2006 at 11:04:27AM -0400, Lennart Augustsson wrote:
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] ]
This is the version I first wanted to (try to) implement (improvements thanks to the thread, obviously :-): newtype SF a b = SF { runSF :: [a] -> [b] } instance Arrow SF where arr f = SF (map f) SF f >>> SF g = SF (f >>> g) first (SF f) = SF (unzip >>> first f >>> uncurry zip) substitute e l = arr (\x->if x==e then l else [x]) >>> SF concat I was studying Hughes when I read the first mail of this thread. But you can see it yourself... Andrea