2010-02-11 1 views
0

나는 수업 과제를 준비 중입니다. 그냥 소스에 박사 제도 (중급 학생 언어)라고 내가있을 때, 그러나스키마에 하나의 필드가있는 구조체를 정의하십시오.

(define-struct diff-exp exprs) 
(define-struct mult-exp exprs) 
;; An Expr is one of 
;; -- Number 
;; -- (make-diff-exp (cons Expr LOExpr)) 
;; -- (make-mult-exp (cons Expr LOExpr)) 
;; Interpretation: a diff-exp represents a difference, 
;; and a mult-exp represents a multiplication. 
;; A List of Exprs (LOExpr) is one of 
;; -- empty 
;; -- (cons Expr LOExpr) 

:

define-struct: expected a sequence of field names after the structure type name in `define-struct', but found something else 

가 나는 것이 있습니다 문제 문은 데이터 정의를 사용하여 말한다 여기에 누락되었거나 선생님이 나에게 유효하지 않은 데이터 정의를 제공 했습니까?

+1

하나의 요소 목록으로'exprs'를 정의해야한다고 생각합니다. –

답변

1

위의 주석에서 제안한 것과 마찬가지로 define-struct은 필드 목록을 사용합니다. 단 하나만 필요한 경우 하나의 요소 목록을 사용하십시오. 예제 코드 :

(define-struct diff-exp (exprs)) 

(let ((myexpr (make-diff-exp (list foo bar)))) 
    (diff-exp-exprs myexpr)) 

당신이 할 수있는 define-structin the PLT Scheme documentation의 많은 잡다한 기능을 통해 소총.

+0

목록이 없기 때문에 "list of fields"라는 말을 제외하고는 모두 정확합니다. 다음과 같은 구문 만 있습니다 (field1 field2 ...). –

+0

포스터가 매크로와 함수의 구별을 아직 이해하지 못했기 때문에 그 사실을 알았습니다. 그러나'exprs '가 실제로 코드에서리스트에 바인딩되어 있다면 실제로 문제와 관련이 있습니다. 잘만되면 그는 나에도 불구하고 그의 길을 발견했다. – mquander

+0

선생님은 마침내 제게 돌아 왔고 자신의 말에 오타가 있다고했습니다. – unholysampler