0

我有一个任务,我必须为表达式定义一个别名,在其中一个指南中,我们被告知使用 setf 或列表列表来定义它们。更具体地说,我们需要将它们的 lambda 演算值分配给别名 ADD/SUCC/PRED/etc,例如 ---> (ADD := (λ mnf x.nf (mfx))) <----。

这样,在任何给定操作中用别名替换它们之后,我们就可以操作它们。由于我没有找到任何明确的解释,而且我不知道如何继续使用 setf,所以如果你们中的任何人能给我一个小费,我会发现它真的很有帮助。

到目前为止,要更改我使用的条件值,如果任何符号等于我需要替换的单词,它就会这样做,但我似乎效率不高。

4

1 回答 1

1

setf是一个 Common Lisp 宏。DrRacket 提供的默认语言中不存在它。

您可能是说set!, set-car!,或者set-cdr!如果您真的是说它应该与 Racket 一起使用,它是 Scheme 的后代。

因为 Racket 具有许多抽象级别,您可以在其中实现任何表面语法,因此可以实现 Common Lisp 然后您当然应该能够使用它并不牵强setf:-)

于 2021-01-09T05:04:39.037 回答