2014-11-11 2 views
1

매크로의 왼쪽에서 하나의 매개 변수와 오른쪽에서 한 개의 매개 변수를 가져올 매크로를 정의 할 수 있습니까?2 개의 매개 변수가있는 스키마 매크로

(test = 10) 

새로운 변수를 정의 내가 그 매크로를 작성하는 시도 : 나는 내 프로그램이 어떤 종류의를 작성하려면

(define-syntax = 
    (syntax-rules() 
    ((a _ b) 
    (define a b)))) 

을하지만 난에 오류 "잘못된 구문을 가지고 = "

+0

이것은 아마도 사용중인 Scheme 구현에 부분적으로 달려 있습니다. 어떤 스키마 구현을 사용하고 있습니까? –

+0

또한이 단어는 "중위어 연산자를 매크로로 정의하고 싶습니다"와 같은 "중위 어휘"입니다. 이런 식으로 운이 더 많이 생길 수도 있습니다. –

+1

매크로가 있더라도 운영자가 먼저옵니다. 매크로에서'='매크로는 첫 번째 요소가되어야합니다. 그래서 Lisp을 중위어로 만들 수 없으며 Algol처럼 이상하게 만들 수 있습니다. – Sylwester

답변

-1

양식이 첫 번째 요소에 의해 결정되므로 test이 바인딩되지 않는 문제가 있습니다. 이

(define-syntax = 
    (syntax-rules() 
    ((_ a b) (define a b)))) 

당신이가는 :

(= test 10) 

당신은이 같은 매크로를 작성 :

올바른 방법이입니다. 끔찍한 중위어 구문없이.

관련 문제