Functional programming 在Scheme中不使用布尔运算符的多个条件

Functional programming 在Scheme中不使用布尔运算符的多个条件,functional-programming,scheme,racket,Functional Programming,Scheme,Racket,我不知道怎么问这个问题。基本上,我的教授解决了一个问题,他在cond语句中没有使用布尔表达式(and,or,not)。所以,我试图想出一个虚拟的例子,我注意到了一些奇怪的东西。正如你在下面看到的。我不知道为什么true false会给我false而不是else语句,但是当我做false true时,它会给else语句。我将此视为AND运算符,我知道我错了 (cond ((= 2 2) (= 3 3)) (else "Hello")) ; --> T T

我不知道怎么问这个问题。基本上,我的教授解决了一个问题,他在cond语句中没有使用布尔表达式(and,or,not)。所以,我试图想出一个虚拟的例子,我注意到了一些奇怪的东西。正如你在下面看到的。我不知道为什么true false会给我false而不是else语句,但是当我做false true时,它会给else语句。我将此视为AND运算符,我知道我错了

(cond ((= 2 2) (= 3 3))
      (else "Hello"))   ; --> T T --> #t

(cond ((= 2 2) (= 3 1))
      (else "Hello"))   ; --> T F --> #f

(cond ((= 2 1) (= 3 3))
      (else "Hello"))   ; --> F T --> "Hello"

(cond ((= 2 1) (= 3 1))
      (else "Hello"))   ; --> F F --> "Hello"

你应该知道三个方程式

一,

也就是说,当一个子句的LHS是
#f
,只需“划掉”该子句即可

三,

=

通过使用第一个方程,我们得到的结果应该是
(=3)
=
#t

二,

=

通过使用第一个方程,我们得到的结果应该是
(=31)
=
#f

三,

=

通过使用第二个方程,我们得出其应计算为:

(cond (else "Hello"))
(cond (else "Hello"))
通过使用第三个等式,我们得到它的计算结果应该是“Hello”

四,

=

通过使用第二个方程,我们得出其应计算为:

(cond (else "Hello"))
(cond (else "Hello"))

通过使用第三个等式,我们得到它的计算结果应该是
“Hello”

您应该知道三个等式

一,

也就是说,当一个子句的LHS是
#f
,只需“划掉”该子句即可

三,

=

通过使用第一个方程,我们得到的结果应该是
(=3)
=
#t

二,

=

通过使用第一个方程,我们得到的结果应该是
(=31)
=
#f

三,

=

通过使用第二个方程,我们得出其应计算为:

(cond (else "Hello"))
(cond (else "Hello"))
通过使用第三个等式,我们得到它的计算结果应该是“Hello”

四,

=

通过使用第二个方程,我们得出其应计算为:

(cond (else "Hello"))
(cond (else "Hello"))

通过使用第三个等式,我们得到它应该计算为
“Hello”

cond
语法是

(cond (condition1 value1)
      (condition2 value2)
      ...
      (conditionN valueN))
因此,您的条件是
(=2 2)
(=2 1)
,以及
else
(这相当于
cond
-表达式中的
#t
),可能的值是
(=3 3 3)
(=3 1)
,以及“Hello”

相当于

(if condition value1 value2)
所以你有相当于

(if (= 2 2)
    (= 3 3)
    "Hello")

(if (= 2 2)
    (= 3 1)
    "Hello")

等等。

语法是

(cond (condition1 value1)
      (condition2 value2)
      ...
      (conditionN valueN))
因此,您的条件是
(=2 2)
(=2 1)
,以及
else
(这相当于
cond
-表达式中的
#t
),可能的值是
(=3 3 3)
(=3 1)
,以及“Hello”

相当于

(if condition value1 value2)
所以你有相当于

(if (= 2 2)
    (= 3 3)
    "Hello")

(if (= 2 2)
    (= 3 1)
    "Hello")

依此类推。

每个子句的car都是一个条件,如果该条件成立,则执行其他所有内容。每个子句的car都是一个条件,如果该条件成立,则执行其他所有内容。
(cond (condition1 value1)
      (condition2 value2)
      ...
      (conditionN valueN))
(cond (condition value1) 
      (else value2))
(if condition value1 value2)
(if (= 2 2)
    (= 3 3)
    "Hello")

(if (= 2 2)
    (= 3 1)
    "Hello")