• Re: A Long Piece Of Lisp Code

    From B. Pym@Nobody447095@here-nor-there.org to comp.lang.lisp,comp.lang.scheme on Wed Jun 25 22:14:29 2025
    From Newsgroup: comp.lang.lisp

    B. Pym wrote:

    (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)

    (use srfi-1) ;; break

    (break odd? '(0 2 4 5 7))
    ===>
    '(0 2 4)
    '(5 7)


    --- Synchronet 3.21d-Linux NewsLink 1.2