我正在尝试使用 Ruby 做“The Little Schemer”中的练习。我想知道原子的等效方法?在 Ruby 方案中。
原子?是一种方法,如果传入的参数是原子,则返回 true,否则返回 false。 据我了解,原子可以是一串字符或数字。它不能是列表。
最佳答案
Scheme 中的原子,由 The Little Schemer 定义:
(define atom?
(lambda (x)
(and (not (pair? x)) (not (null? x)))))
所以 Scheme 中的原子是除了列表(用 'cons' 运算符创建的东西)和 null 之外的一切。在 Scheme 中,这最终是符号、数字、方法,可能还有一些我忘记的东西。 Ruby 要复杂得多。
所以为了做 The Little Schemer 中的练习,Ruby 中的原子是 FixNum、Symbol、TrueValue 或 FalseValue。或者一个方法。然后对于列表,您将需要为 Ruby 的数组类型定义 cons、car 和 cdr 方法。我实际上可能会说,任何不是数组且不是 nil 的东西都是原子。这种讨论有时会变得主观。
然后您可能需要进行更多的黑客攻击才能使所有内容的行为相同。老实说,虽然我喜欢 The Little Schemer,但它确实有一些相当特定于 Lisp 的东西,虽然我可以看到将它改编为另一种函数式语言,如 Haskell 而不会太多麻烦,但我认为让它在像 Ruby 这样的语言中工作会比它值得的麻烦更多。
关于原子的 ruby 方法?在计划中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1286812/