scheme - 方案中的嵌套条件和未指定的返回值
问题描述
我正在尝试编写一个函数,将三个参数中的两个最高值相加。
(define (sumhighest a b c) (cond
((and (>= a b) (>= a c)) (if (>= b c) (+ a b) (+ a c)))
((and (>= b a) (>= b c)) (if (>= a c) (+ a b) (+ b c)))
((and (>= c a) (>= c b)) (if (>= a b) (+ a c) (+ b c))))
)
每当我使用该函数时,我都会收到消息“未指定的返回值”。我不知道什么在这里不起作用。IE:
(sumhighest 1 2 3)
编辑:有些人指出这段代码对他们有用。我正在使用解释器的 mit-scheme 实现。它位于 Ubuntu 18.04 上名为 mit-scheme 的包下。
解决方案
这可能取决于实现,但正如评论中提到的,它对我们中的一些人有用。在没有更多上下文的情况下,我建议您将最后一个条件替换(and (>= c a) (>= c b))
为else
. 或切换到不同的解释器:)
推荐阅读
- shell - 在尾随“========”之后打印下面的所有内容
- symfony - Symfon isnull 子查询
- flutter - 强制在颤动中加载所有小部件
- vim - Vim syntastic for C 不显示未使用函数的警告
- automation - botium 中是否有任何方法可以使用表情符号来断言响应文本?
- flutter - 如何将 Flutter Webview 插件用于 PayPal 支付网关
- android - Android - 这是否必须在单独的 xml 文件中创建每个形状?
- ios - 如何从相机图像中获取深度数据
- angularjs - 如何在 Powershell 中使用 AngularJs 表单自动登录网站?
- unit-testing - 如何对锯齿形超级账本交易处理器进行单元测试