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