Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Re: Complicated system, process hangs when called from cmucl.

26 views
Skip to first unread message

WJ

unread,
Nov 16, 2012, 6:58:11 AM11/16/12
to
Tim Bradshaw wrote:

> (defun rd/sorted/simple (list)
> ;; simple version: test is EQL, KEY is IDENTITY
> (if (null list)
> ;; if the list is empty just return it. This means that the code
> ;; below can always assume at least one eltl, and thus avoid
> ;; boundary
> ;; cases.
> '()
> (cons (first list)
> (loop with prev = (first list)
> for curr in list
> unless (eql curr prev)
> collect curr
> and do (setf prev curr)))))


Clojure:

(defn unique-sorted [sorted]
(let [pairs (partition-all 2 1 sorted)]
(for [[x y] pairs :when (not= x y)] x)))

Here's how partition-all works:

user=> (partition-all 2 1 '(a b c d))
((a b) (b c) (c d) (d))


Racket:

(define (unique-sorted sorted)
(define prev sorted)
(for/list ([x sorted] #:unless (equal? x prev))
(set! prev x)
x))
0 new messages