小打字机

Vas*_*hin 2 types racket pie-lang

在《The Little Typer》一书中,我刚刚开始使用DrRacket。从 David Christiansen 的视频中,我输入了:

(claim two-plus-two-is-four
  (= Nat (+ 2 2) 4))
Run Code Online (Sandbox Code Playgroud)

返回错误:

 claim : this function is not defined.
Run Code Online (Sandbox Code Playgroud)

为什么?

Ale*_*uth 5

首先你需要安装pie. 在 DrRacket 中,您可以通过以下方式执行此操作:File > Package Manager... > Do What I Meanpie ,在包源字段中键入,然后单击安装。

或者,如果您使用命令行,则可以使用以下命令安装它:

raco pkg install pie
Run Code Online (Sandbox Code Playgroud)

其次,如果您使用 DrRacket,您需要确保在窗口左下角选择“从源确定语言”(在命令行上这是默认设置)。

第三,放在#lang pie文件的顶部。

#lang pie

(claim two-plus-two-is-four
  (= Nat (+ 2 2) 4))
Run Code Online (Sandbox Code Playgroud)

这仍然不起作用,因为它+不是内置的;它可以根据其他内置的东西来定义(这在本书的第 72 - 77 页上讨论)。

  • 好吧,不只我一个人这样。我不明白为什么 `(+ 1 2)` 不起作用。“+”函数在前几章中随处可见,我确信它在某个地方说它没有定义,但我一定错过了。今天尝试计算“(+ 1 2)”时变得有点灰暗。 (2认同)