[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] add regexp-split

From: Nala Ginrut
Subject: Re: [PATCH] add regexp-split
Date: Fri, 30 Dec 2011 23:58:23 +0800

Now that we have previous thread on this topic, I think it's no need to format a patch.

Maybe this will solve the problem:
(define* (regexp-split regex str #:optional (flags 0))
  (let ((ret (fold-matches 
     regex str (list '() 0 str)
     (lambda (m prev)
(let* ((ll (car prev))
      (start (cadr prev))
      (tail (match:suffix m))
      (end (match:start m))
      (s (substring/shared str start end))
      (groups (map (lambda (n) (match:substring m n))
   (iota (1- (match:count m))))))
 (list `(,@ll ,s ,@groups) (match:end m) tail)))
    `(,@(car ret) ,(caddr ret))))

On Fri, Dec 30, 2011 at 11:33 PM, Daniel Hartwig <address@hidden> wrote:
On 30 December 2011 21:03, Neil Jerram <address@hidden> wrote:
> Nala Ginrut <address@hidden> writes:
>> hi guilers!
>> It seems like there's no "regexp-split" procedure in Guile.
>> What we have is "string-split" which accepted Char only.
>> So I wrote one for myself.
> We've had this topic before, and it only needs a search for
> "regex-split guile" to find it:

Good to see that there is continuing interest in this feature.

IMO, the implementation here is more elegant and readable for it's use
of `fold-matches'.  The first implementation from the thread you
mention effectively rolls it's own version of `fold-matches' over the
result of `list-matches' (which is implemented using `fold-matches'

reply via email to

[Prev in Thread] Current Thread [Next in Thread]