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 に答える