Skip to content

Instantly share code, notes, and snippets.

@olsonjeffery
Created May 5, 2011 20:26
Show Gist options
  • Save olsonjeffery/957856 to your computer and use it in GitHub Desktop.
Save olsonjeffery/957856 to your computer and use it in GitHub Desktop.
little schemer stuff.. '() vs quote() in racket
(define multirember
(lambda (a lat)
(cond
((null? lat) ('()))
((eq? (car lat) a) (multirember a (cdr lat)))
(else (cons (car lat)
(multirember a (cdr lat)))))))
> (multirember 'jeff '(jeff kerra jeff))
procedure application: expected procedure, given: '() (no arguments)
=== context ===
/Users/jeff/src/racket/ls.rkt:60:2: multirember
/Users/jeff/Racket v5.1/collects/racket/private/misc.rkt:85:7
(define multirember
(lambda (a lat)
(cond
((null? lat) (quote()))
((eq? (car lat) a) (multirember a (cdr lat)))
(else (cons (car lat)
(multirember a (cdr lat)))))))
> (multirember 'jeff '(jeff kerra jeff))
'(kerra)
(define subst2
(lambda (new o1 o2 lat)
(cond
((null? lat) ('()))
(else (cond
((or (eq? (car lat) o1) (eq? (car lat) o2)) (cons new (cdr lat)))
(else (subst2 new o1 o2 (cdr lat))))))))
> (subst 'jeff 'geoff '(geoff kerra geoff))
'(jeff kerra geoff)
@olsonjeffery
Copy link
Author

so, basically:

'() == (quote ()) .. too many parens.. interestingly, there are several applications where ('()) works while it doesn't in others. mysteries within mysteries...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment