;; An ATOM is one of:
;; -- Symbol
;; -- String
;; -- Number
;; An SEXP (S-expression) is one of:
;; -- empty
;; -- (cons ATOM SEXP)
;; -- (cons SEXP SEXP)
그래서 나는 SEXP의 모든 숫자를 요약하려고합니다! 여기 내 코드가의 구성표 구조 및 목록 목록이있는 경우 목록에서 숫자를 계산하는 방법
;; sum-numbers: sexp -> Number
(define (sum-numbers sexp)
(cond
[(empty? sexp) 0]
[(ATOM? (first sexp)) (+ (atom-sum-numbers (first sexp))
(sum-numbers (rest sexp)))]
[(SEXP? (first sexp)) (+ (sum-numbers (first sexp))
(sum-numbers (rest sexp)))]))
;; atom-sum-numbers: Atom -> Number
(define (atom-sum-numbers a)
(cond
[(symbol? a) 0]
[(number? a) (+ (ATOM-number a)
(atom-sum-numbers a))]
[(string? a) 0]))
그러나 오류가
cond
를 말한다 : 모든 질문의 결과는 거짓이었다. 거기서 무슨 일이 일어 났는지 궁금 하네.
은 [문서를 살펴 보자 ] (http://docs.racket-lang.org/reference/define-struct.html). '(define-struct ATOM (symbol string number)) '을 쓸 때,'ATOM'은 기호, 문자열, 숫자의 3 가지 요소의 조합이라는 것입니다. –
@ ÓscarLópez OP가 원하는 것 같았던 것은 C의 노조와 비슷한 것입니다. 어떤 Scheme 구현이 노동 조합을 지원하는지는 모르겠다. 그 기억이 안전하지 않은 것 같습니다. 물론 정적 유형의 언어에는 대수 데이터 형식과 같은 개념이 있지만 Scheme에는 적용되지 않습니다. –