Scheme / Racket:评估谓词和真/假

时间:2016-09-24 22:18:54

标签: scheme racket

假设有一个表达式基本上被简化为: (true false),或任何真假的组合。

例如, [(predicate) false][(predicate) (predicate)]

我试图理解如何在Scheme中评估这样的表达式 - 这句话本质上是什么?

1 个答案:

答案 0 :(得分:1)

作为cond中的术语:

(cond 
  [(predicate) false]
  [else true])

(not (predicate))的条件实现,因为谓词需要是一个真值来获得错误的结果。

(cond 
  [(predicate) (predicate)]
  [else false])

这与(predicate)相同,因为它成为所有真值的自身,而我添加的默认情况变为它的假值。

在其中任何一个中如果你有其他东西作为默认情况,它当然不会映射到那些简单的结果,而是稍微复杂的结果:

(cond 
  [(predicate) (predicate)]
  [else 'something])

(and (predicate) 'something)相同,因为我们已将错误值更改为something

(cond 
  [(predicate) false]
  [else 'something])

(and (not (predicate)) 'something)

相同