2

我正在尝试在 Scheme 中构建一个基本的解释器,并且我想使用关联列表来映射到算术函数。这是我到目前为止所拥有的:

; A data type defining an abstract binary operation
(define binoptable
  '(("+" . (+ x y)))
    ("-" . (- x y))
    ("*" . (* x y))
    ("/" . (/ x y)))
)

问题是表的 RHS 上的元素存储为符号列表。有没有人对如何补救他有任何想法。提前致谢。

4

1 回答 1

6

你可能想要:

(define binoptable
  `(("+" . ,+)
    ("-" . ,-)
    ("*" . ,*)
    ("/" . ,/)))

此外,您可以使用宏来更轻松地指定:

(define-syntax make-binops
  (syntax-rules ()
    [(make-binops op ...)
     (list (cons (symbol->string 'op) op) ...)]))
(define binoptable (make-binops + - * /))
于 2009-09-29T06:16:18.030 回答