SICP Exercise 4.5
(define (expand-clauses clauses)
(if (null? clauses)
'false
(let ((first (car clauses))
(rest (cdr clauses)))
(if (cond-else-clause? first)
(if (null? rest)
(sequence->exp (cond-actions first))
(error "ELSE clause isn't last -- COND->IF"
clauses))
(if (cond-=>-clause? first)
(make-if (cond-predicate first)
(list (sequence->exp (cond-=>-actions first))
(cond-predicate first))
(expand-clauses rest))
(make-if (cond-predicate first)
(sequence->exp (cond-actions first))
(expand-clauses rest)))))))
(define (cond-=>-clause? clause)
(eq? (cadr clause) '=>))
(define (cond-=>-actions clause)
(cddr clause))
운영 결과는 다음과 같습니다.;;; M-Eval input:
(cond ((assoc 'b '((a 1) (b 2))) => cadr) (else false))
;;; M-Eval value:
2
실행 프롬프트:1, runnu에서eval 파일에 다음 파일이 로드됩니다. 코드는 다음과 같습니다.
(load "apply.rkt")
(load "data_structure.rkt")
(load "representation.rkt")
(load "exercise4.3.rkt") ;;
(load "exercise4.5.rkt")
2, 기본 프로세스에 assoc와cadr를 추가해야 합니다.(define primitive-procedures
(list (list 'car car)
(list 'cdr cdr)
(list 'cadr cadr)
(list 'cons cons)
(list 'null? null?)
(list '+ +)
(list 'list list)
(list 'display display)
(list 'assoc assoc)))
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.