[Haskell-cafe] Break Function Using Lazy Pairs

aditya siram aditya.siram at gmail.com
Mon Apr 5 17:19:51 EDT 2010


Hi all,
For the past couple of weeks I've been trying to understand
tying-the-knot style programming in Haskell.

A couple of days ago, Heinrich Apfelmus posted the following 'break'
function as part of an unrelated thread:
break []     = ([],[])
break (x:xs) = if x == '\n' then ([],xs) else (x:ys,zs)
               where (ys,zs) = Main.break xs

I've stepped through the code manually to see if I understand and I'm
hoping someone will tell me if I'm on the right track:
-- break "hi\nbye" =
--    let f1 = (break "i\nbye")
--           = let f2 = (break "\nbye")
--                    = ([],"bye")
--             ('i' : fst f2, snd f2) => ('i' : [], "bye")
--    ('h' : fst f1, snd f1) => ('h' : 'i' : [], "bye")
--                           => ("hi","bye")

-deech


More information about the Haskell-Cafe mailing list