我主要是一名 C++(因此是一名 OO/命令式)程序员,我觉得很奇怪的是,在条件语句中,每个求值只能有一个语句,例如函数式语言 Scheme 中的 if 语句。
例如:
(let ((arg1 0) (arg2 1))
(if (> arg1 arg2)
arg1
arg2)))
错误示例:
(let ((arg1 0) (arg2 1))
(if (> arg1 arg2)
(arg1 (display "cool"))
(arg2 (display "not cool"))))
给我一个类型为“程序应用程序:预期程序,给定:2;参数为:#void”的错误
这可以通过将所述条件语句放入已定义函数体内的不同语句中来解决,例如,条件语句的正文每次都有单独的语句,如下所示:
(if (condition) statement1a statement2a)
(if (condition) statement1b statement2b)
等等...
不用说,它不太实用。更不用说重复的代码开销了。
我在这里错过了什么还是真的没有其他办法?
(let((arg1 0)(arg2 1))
(if (> arg1 arg2)
(begin
(display arg1)
(newline)
(display "cool"))
(begin
(display arg2)
(newline)
(display "not cool"))))
当您说 (arg1 (display "cool")) 时,您暗示 arg1 应该是一个过程。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)