[Haskell-cafe] An alternative break
Hello, I need a break function that splits the list one element further than the ordinary break. This is the simplest solution I could imagine: breakI :: (a - Bool) - [a] - ([a], [a]) breakI p s = case break p s of ([], []) - ([], []) (x, []) - (x, []) (x, l) - (x ++ [head l], tail l ) Is there a better way to write this ? thanks in advance, Pieter -- Pieter Laeremans [EMAIL PROTECTED] ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] An alternative break
On Wed, May 28, 2008 at 2:53 PM, Pieter Laeremans [EMAIL PROTECTED] wrote: Hello, I need a break function that splits the list one element further than the ordinary break. This is the simplest solution I could imagine: breakI :: (a - Bool) - [a] - ([a], [a]) breakI p s = case break p s of ([], []) - ([], []) (x, []) - (x, []) (x, l) - (x ++ [head l], tail l ) Is there a better way to write this ? Your first two cases are redundant; you can eliminate the first one. Other than that, it looks fine. thanks in advance, Pieter -- Pieter Laeremans [EMAIL PROTECTED] ___ 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
Re: [Haskell-cafe] An alternative break
Hi, Am Mittwoch, den 28.05.2008, 23:53 +0200 schrieb Pieter Laeremans: Hello, I need a break function that splits the list one element further than the ordinary break. This is the simplest solution I could imagine: breakI :: (a - Bool) - [a] - ([a], [a]) breakI p s = case break p s of ([], []) - ([], []) (x, []) - (x, []) (x, l) - (x ++ [head l], tail l ) Is there a better way to write this ? appending an element to a list is expensive, so if this is a problem you can try this: breakI _ [] = ([], []) breakI p (x:xs') | p x= ([x],xs') | otherwise = let (ys,zs) = breakI p xs' in (x:ys,zs) It is basically the Prelude.break from http://haskell.org/ghc/docs/latest/html/libraries/base/src/GHC-List.html#break with the forth line (with p x) changed. Greetings, Joachim -- Joachim nomeata Breitner mail: [EMAIL PROTECTED] | ICQ# 74513189 | GPG-Key: 4743206C JID: [EMAIL PROTECTED] | http://www.joachim-breitner.de/ Debian Developer: [EMAIL PROTECTED] signature.asc Description: Dies ist ein digital signierter Nachrichtenteil ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe