/usr/share/elk/setf.scm is in elk 3.99.8-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | ;;; -*-Scheme-*-
;;;
;;; An attempt on defsetf and setf
(define defsetf)
(define get-setter)
(let ((setters '()))
(set! defsetf
(lambda (accessor setter)
(set! setters (cons (cons accessor setter) setters))
#v))
(set! get-setter
(lambda (accessor)
(let ((a (assoc accessor setters)))
(if a
(cdr a)
(error 'get-setter "no setter for ~s" accessor))))))
(define-macro (setf var val)
(cond
((symbol? var) `(set! ,var ,val))
((pair? var)
(let ((setter (get-setter (eval (car var)))))
`(,setter ,@(cdr var) ,val)))
(else (error 'setf "symbol or form expected"))))
|