mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-06 15:40:29 +02:00
Simplify code for define-option-interface.
This commit is contained in:
parent
8e733f1095
commit
0983f67f09
2 changed files with 17 additions and 24 deletions
|
@ -1,5 +1,8 @@
|
|||
2002-11-04 Neil Jerram <neil@ossau.uklinux.net>
|
||||
|
||||
* boot-9.scm (define-option-interface): Simplify code-generation
|
||||
code.
|
||||
|
||||
* debugger/command-loop.scm (read-and-dispatch-command): Import
|
||||
set-readline-prompt dynamically if we need to. (Previous
|
||||
arrangement didn't work if this module was loaded before (ice-9
|
||||
|
|
|
@ -2018,32 +2018,22 @@
|
|||
(set! options (delq! flag options)))
|
||||
flags)
|
||||
(,interface options)
|
||||
(,interface)))))
|
||||
|
||||
(make-set! (lambda (interface)
|
||||
`((name exp)
|
||||
(,'quasiquote
|
||||
(begin (,interface (append (,interface)
|
||||
(list '(,'unquote name)
|
||||
(,'unquote exp))))
|
||||
(,interface)))))))
|
||||
(,interface))))))
|
||||
(procedure->memoizing-macro
|
||||
(lambda (exp env)
|
||||
(cons 'begin
|
||||
(let* ((option-group (cadr exp))
|
||||
(interface (car option-group)))
|
||||
(append (map (lambda (name constructor)
|
||||
`(define ,name
|
||||
,(constructor interface)))
|
||||
(cadr option-group)
|
||||
(list make-options
|
||||
make-enable
|
||||
make-disable))
|
||||
(map (lambda (name constructor)
|
||||
`(defmacro ,name
|
||||
,@(constructor interface)))
|
||||
(caddr option-group)
|
||||
(list make-set!)))))))))
|
||||
(interface (car option-group))
|
||||
(options/enable/disable (cadr option-group)))
|
||||
`(begin
|
||||
(define ,(car options/enable/disable)
|
||||
,(make-options interface))
|
||||
(define ,(cadr options/enable/disable)
|
||||
,(make-enable interface))
|
||||
(define ,(caddr options/enable/disable)
|
||||
,(make-disable interface))
|
||||
(defmacro ,(caaddr option-group) (opt val)
|
||||
`(,,(car options/enable/disable)
|
||||
(list ',opt ,val)))))))))
|
||||
|
||||
(define-option-interface
|
||||
(eval-options-interface
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue