在Scheme中编写一个typeof过程

发布于 2024-10-11 03:41:11 字数 359 浏览 1 评论 0原文

帮我回答简单方案中出现的以下问题

6.7 编写程序type-of 接受任何内容作为其参数并返回单词 word、sentence、number 或 boolean 之一:(

> (type-of '(getting better))
  SENTENCE

> (type-of 'revolution)
  WORD

> (type-of (= 3 3))
  BOOLEAN

即使数字是单词,如果其参数是数字,您的过程也应该返回 number。)

Help me answer the following question appears in Simply Scheme

6.7 Write a procedure type-of that takes anything as its argument and returns one of the words word, sentence, number, or boolean:

> (type-of '(getting better))
  SENTENCE

> (type-of 'revolution)
  WORD

> (type-of (= 3 3))
  BOOLEAN

(Even though numbers are words, your procedure should return number if its argument is a number.)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

北陌 2024-10-18 03:41:11

您可以使用 cond 形式检查多个条件并相应地执行操作。您可以使用谓词 boolean?number?word?sentence? 来查明是否value 分别是布尔值、数字、单词或句子。这基本上就是全部内容了。

您唯一需要考虑的是 number? 的大小写必须位于 word? 的大小写之前(因为 word? 也会返回正如练习中指出的那样,对于数字来说也是如此)。


1 前两个是标准方案,后两个在本书附带的 simple.scm 中定义。

You can use the form cond to check several conditions and execute an action accordingly. You can use the predicates boolean?, number?, word? and sentence?¹ to find out whether a value is a boolean, number, word or sentence respectively. That's basically all there is to it.

The only thing you need to consider is that the case for number? must come before the case for word? (because word? would also return true for numbers as the exercise helpfully points out).


¹ The first two are standard scheme, the latter two are defined in simply.scm, which comes with the book.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文