[Haskell-cafe] Re: Why is there no splitBy in the list module?
jon.fairbairn at cl.cam.ac.uk
Fri Jul 21 05:46:25 EDT 2006
On 2006-07-20 at 18:31BST I wrote:
> On 2006-07-13 at 10:16BST I wrote:
> > Hooray! I've been waiting to ask "Why aren't we asking what
> > laws hold for these operations?"
> Having thought about this for a bit, I've come up with the
> below. This is intended to give the general idea -- it's not
> polished code,
And already some changes (but all to comments) I'd
appreciate comments on the law below.
--- lib/split.lhs 2006/07/21 08:54:28 1.1
+++ lib/split.lhs 2006/07/21 09:42:49
@@ -17,10 +17,17 @@
=> "A Random List Of Words\nOn Lines"
+ I think the relevant law is
+ (forall x. all (not . p) (map f x)) =>
+ segmentsSatisfying (not . p) . fromParts . mapRight f . parts p
+ == segmentsSatisfying (not . p)
+ In other words, if f doesn't add any "not . p" elements,
+ the segments satisfying "not . p" are unchanged.
> contiguousParts p l = [a | Right a <- parts p l]
- so words = contiguousParts Char.isAlphaNum
+ so words = contiguousParts (not . Char.isSpace)
> segmentsSatisfying predicate
> = concat . map dropSeps . parts predicate
Jón Fairbairn Jon.Fairbairn at cl.cam.ac.uk
More information about the Haskell-Cafe