简明方案R5RS定义具有多个字段的结构或类

时间:2014-11-17 05:24:39

标签: scheme racket r5rs

我设法用一个字段定义一个结构,如何在一个结构或类中定义多个字段?

我是R5RS的新手,我只能提出有问题的代码,请将其视为伪代码,表达我想要做的事情。

(define recipe 
    (let (salt 5)
         (sauce "ketchup")))

(define recipe
   '((let salt 5)
     (let sauce "ketchup")))

最简洁和最常见的方法是什么?

1 个答案:

答案 0 :(得分:1)

大多数Scheme实现都通过SRFI 9提供记录。因此,在您的情况下,您可以定义recipe记录类型,如下所示:

(define-record-type <recipe>
  (recipe salt sauce)
  recipe?
  (salt recipe-salt)
  (sauce recipe-sauce))

然后你可以像这样使用它:

> (define salty-ketchup (recipe 5 "ketchup"))
> (recipe-salt salty-ketchup)
5
> (recipe-sauce salty-ketchup)
"ketchup"

如果你正在使用Racket,那么定义结构的语法就更简单了。

(struct recipe (salt sauce))