0
(apply f '(x1 x2 x3 .... xn))
가지고 있고 그것을 매크로 확장을 변경하고 싶습니다. : (f x1 x2 x3...xn)
. 어떤 종류의 문제가 발생할 수 있습니까?내가 가지고있는 경우 : (적용 f '(x1 x2 x3 .... xn)) 및 매크로 확장을 변경하려면
(apply f '(x1 x2 x3 .... xn))
가지고 있고 그것을 매크로 확장을 변경하고 싶습니다. : (f x1 x2 x3...xn)
. 어떤 종류의 문제가 발생할 수 있습니까?내가 가지고있는 경우 : (적용 f '(x1 x2 x3 .... xn)) 및 매크로 확장을 변경하려면
그냥
(define-macro (my-other-apply f args)
`(,f ,@args))
에
(define (my-apply f args)
(apply f args))
변환하는 경우는 다음 충분히 간단한 것 같다. 이 상황에서 가장 큰 함정은 매크로에 전달한 목록을 인용하지 않는 것을 기억해야한다는 것입니다.
>(my-apply + '(1 2 3))
>6
>(my-other-apply + '(1 2 3))
>ERROR syntax-error: "(+ quote 1 2 3)"
>(my-other-apply + (1 2 3))
>6
다른 8 가지 질문을 수락하지 않았습니다. 그들 중 누구도 당신의 질문에 대한 정답이 아니 었습니까? (그중 몇몇이) 인 경우에, 그 (것)들을 통과하고 그 정확한 응답을 받아들이는 시간을내어주십시오 (다만 응답의 옆에 "V"같이 아이콘을 똑딱 거리십시오). –