Code: Select all
(define-syntax setvar
(syntax-rules ()
([setvar var value] [define var value])))
Using Gambit.
Code: Select all
(define-syntax setvar
(syntax-rules ()
([setvar var value] [define var value])))
Code: Select all
(define-syntax setvar
(syntax-rules ()
((setvar var value)
(define var value) )))
It worked fine for me when I invoked using the command 'gsi -:s'.Indecipherable wrote:Doesn't work in Gambit-C.
Code: Select all
(quote-unique sym1 sym2 sym1 sym3 "bla" sym4 "bla")
=> '(sym1 sym2 sym3 "bla" sym4)
Code: Select all
(define-syntax quote-unique
(syntax-rules (magic end)
;; end case
((quote-unique magic processed end)
'processed)
;; finished iteration
((quote-unique magic (processed ...) sym1 end rest ... )
(quote-unique magic (processed ... sym1) rest ... end))
;; match (doesnt work since racket doesn't like sym1 twice
;; but I'm looking for the same expression twice
((quote-unique magic processed sym1 sym1 . rest )
(quote-unique magic processed sym1 . rest))
;; rotate
((quote-unique magic processed sym1 sym2 rest ... )
(quote-unique magic processed sym1 rest ... sym2))
;; start iteration
((quote-unique rest ...)
(quote-unique magic () rest ... end))))
Code: Select all
(define (remove-duplicates lis)
(cond
((null? lis)
'() )
((member (car lis) (cdr lis))
(remove-duplicates (cdr lis)) )
(else
(cons (car lis) (remove-duplicates (cdr lis))) )))
(define-syntax quote-unique
(syntax-rules ()
((_ args ...)
(remove-duplicates (quote (args ...))) )))
Code: Select all
(defmacro quote-unique ( &rest xs )
(list 'quote (remove-duplicates xs)))