Scheme/Racket:评估谓词和True/False



假设存在一个表达式,其本质上被简化为:(true false),或任何真与假的组合。

例如,

[(predicate) false][(predicate) (predicate)]

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

作为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)

相同

最新更新