Определить структуру с одним полем в схеме - PullRequest
0 голосов
/ 11 февраля 2010

Я работаю над домашним заданием для класса. В заявлении о проблеме говорится об использовании определения данных:

(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 Ответ

1 голос
/ 11 февраля 2010

Как и Анон, предложенный в комментарии выше, define-struct принимает список полей; если вам нужен только один, то используйте список из одного элемента. Пример кода:

(define-struct diff-exp (exprs))

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

Вы можете просмотреть множество различных функций define-struct в документации по схеме PLT .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...