2009-09-29 2 views
2

Scheme에서 기본 인터프리터를 만들려고하고 있는데, 연관리스트를 사용하여 산술 함수에 매핑하려고합니다.어소시에이션리스트를 사용하는 Scheme의 함수 테이블

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

문제는 기호 목록으로 저장되어있는 테이블의 RHS의 요소입니다 : 이것은 내가 지금까지있는 것입니다. 누구든지 자신을 치료하는 방법에 대한 아이디어가 있습니까? 미리 감사드립니다.

답변

6

당신은 아마 원하는 :

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

또한, 당신이 만드는 매크로를 사용할 수 있습니다 쉽게 지정할 수 :

(define-syntax make-binops 
    (syntax-rules() 
    [(make-binops op ...) 
    (list (cons (symbol->string 'op) op) ...)])) 
(define binoptable (make-binops + - * /)) 
관련 문제