[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Scheme-reports] Query - Pairs and Lists
30 minutes ago, Per Bothner wrote:
> You could have a bit or separate typecode for non-list cons
> cells - for example LIST_PAIR vs NON_LIST_PAIR. Cons creates
> a LIST_PAIR if the cdr is '() or a LIST_PAIR, and creates a
> NON_LIST_PAIR otherwise. set-cdr! checks the new cdr if it
> is a NON_LIST_PAIR *or* if the set-cdr! would create a cycle.
> In that case checking for a pure list is O(1). Only set-cdr!
> becomes order-of-magnitude slower, but it's not a function
> we want to encourage use of anyway.
`set-cdr!' is much worse:
(define foo (cons 1 '()))
(define bar (cons 1 foo))
(set-cdr! foo 1)
((lambda (x) (x x)) (lambda (x) (x x))) Eli Barzilay:
http://barzilay.org/ Maze is Life!
Scheme-reports mailing list