• Re: A Long Piece Of Lisp Code

    From B. Pym@21:1/5 to All on Tue Sep 17 11:11:51 2024
    XPost: comp.lang.scheme

    (defun split-if (fn lst)
    (let ((acc nil))
    (do ((src lst (cdr src)))
    ((or (null src) (funcall fn (car src)))
    (values (nreverse acc) src))
    (push (car src) acc))))

    Scheme

    (define (split-if fn lst)
    (do ((src lst (cdr src))
    (acc '() (cons (car src) acc)))
    ((or (null? src) (fn (car src)))
    (values (reverse acc) src))))

    (split-if odd? '(0 2 4 5 7))
    ===>
    (0 2 4)
    (5 7)

    (split-if odd? '(0 2 4 52 70))
    ===>
    (0 2 4 52 70)
    ()

    (split-if odd? '(3 0 2 4 52 70))
    ===>
    ()
    (3 0 2 4 52 70)

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)