2011-08-16 3 views
3

형식은 예컨대형식의 역순을 수행하는 방법은 무엇입니까?

(define lam-form (list `lambda (list `x) (list `when (list `> `x 0) (list `* 100 `x)))) 
(format "~s" lam-form) 

결과가 될 것입니다, 문자열로 모든 유형을 설정할 수 있습니다 : "(lambda (x) (when (> x 0) (* 100 x)))"

그럼 내 질문은 : 어떻게 역을 할까? 의미는 "(lambda (x) (when (> x 0) (* 100 x)))"'(lambda (x) (when (> x 0) (* 100 x)))

답변

4

read으로 되돌립니다.

Welcome to Racket v5.1.3.1. 
-> (read (open-input-string "(lambda (x) (when (> x 0) (* 100 x)))")) 
'(lambda (x) (when (> x 0) (* 100 x))) 
1

"~ s"형식 지정 문을 사용하는 경우 "읽기"가 올바른 선택입니다. 라켓의 "printf"에 대한 문서를보고, 더 자세한 정보는 "write"의 정의를 클릭하십시오.

format의 사용을 반대로 지정하려는 경우 고유 한 대답이 없을 수 있습니다. 예를 들어 (format "~a~a" "abc" "def")을 실행 취소 할 수 없습니다 (즉, abcdef을 생성하는 가능한 여러 호출이 있다는 의미에서).

관련 문제