Rocksolid Light

Welcome to RetroBBS

mail  files  register  newsreader  groups  login

Message-ID:  

"Nature is very un-American. Nature never hurries." -- William George Jordan


devel / comp.lang.lisp / predicate-collect

SubjectAuthor
o predicate-collectRobert L.

1
predicate-collect

<t0g665$roe$1@gioia.aioe.org>

  copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=16951&group=comp.lang.lisp#16951

  copy link   Newsgroups: comp.lang.lisp
Path: i2pn2.org!i2pn.org!aioe.org!18lcLqeIoF9C22HyFy870A.user.46.165.242.75.POSTED!not-for-mail
From: No_spamming@noWhere_7073.org (Robert L.)
Newsgroups: comp.lang.lisp
Subject: predicate-collect
Date: Fri, 11 Mar 2022 18:59:20 -0000 (UTC)
Organization: Aioe.org NNTP Server
Message-ID: <t0g665$roe$1@gioia.aioe.org>
Mime-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Injection-Info: gioia.aioe.org; logging-data="28430"; posting-host="18lcLqeIoF9C22HyFy870A.user.gioia.aioe.org"; mail-complaints-to="abuse@aioe.org";
User-Agent: XanaNews/1.18.1.6
X-Notice: Filtered by postfilter v. 0.9.2
 by: Robert L. - Fri, 11 Mar 2022 18:59 UTC

>
> (defun predicate-collect (list &rest predicates)
> (let ((table (make-hash-table))
> (preds (append predicates
> (list (constantly t)))))
> (dolist (elem list)
> (loop for pred in preds
> until (funcall pred elem)
> finally (push elem (gethash pred table))))
> (mapcar (lambda (pred)
> (nreverse (gethash pred table)))
> preds)))
>
>
> ? (predicate-collect
> '(-5 -4 -3 -2 -1 0 1 2 3 4 5)
> (function evenp)
> (lambda (n) (< n 0))
> (lambda (n) (> n 3)))
>
> ((-4 -2 0 2 4) (-5 -3 -1) (5) (1 3))

Gauche Scheme or Racket:

(define (predicate-collect items . preds)
(if (null? preds)
(list items)
(let-values (((yes no) (partition (car preds) items)))
(cons yes (apply predicate-collect no (cdr preds))))))

(predicate-collect
'(-5 -4 -3 -2 -1 0 1 2 3 4 5)
even?
(lambda (n) (< n 0))
(lambda (n) (> n 3)))

===>
((-4 -2 0 2 4) (-5 -3 -1) (5) (1 3))


devel / comp.lang.lisp / predicate-collect

1
server_pubkey.txt

rocksolid light 0.9.81
clearnet tor