代码之家  ›  专栏  ›  技术社区  ›  unholysampler

在方案中用一个字段定义结构

  •  0
  • unholysampler  · 技术社区  · 14 年前

    我正在为一个班做家庭作业。问题陈述说要使用数据定义:

    (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)
    

    然而,当我在资料来源中只有这一点时,Scheme博士(中级学生语言)说:

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

    这里是否有我遗漏的东西,或者我的老师给了我一个无效的数据定义?

    1 回复  |  直到 14 年前
        1
  •  1
  •   mqp    14 年前

    就像上面评论中提到的Anon, define-struct 获取字段列表;如果只需要一个字段,则使用一个元素列表。示例代码:

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

    你可以快速浏览 定义结构 in the PLT Scheme documentation .