gpt4 book ai didi

haskell - 在 MIT Scheme 中表示未定义的结果

转载 作者:行者123 更新时间:2023-12-02 05:19:28 27 4
gpt4 key购买 nike

假设我有一个函数,它的定义域是所有大于 0 的整数。我希望其他输入的结果是未定义的。为了简单起见,假设这是增量函数。在 Haskell 中,我可以用类似的东西来实现这一点

f :: Integer -> Integer
f x
| x > 0 = x + 1
| otherwise = undefined

当然,这个例子很笨拙,但应该很清楚我想要实现什么。我不确定如何在 Scheme 中实现类似的功能。

(define (f x)
(if (> x 0)
(+ x 1)
(?????)))

我的想法是只在其中插入一个error,但是有什么方法可以更紧密地复制 Haskell 的行为吗?

最佳答案

您的问题与this one有关其中的答案指出在 R5RS 中(我猜 MIT 方案 部分 支持?),带有一个分支的 if 返回一个“未指定的值”。所以相当于 haskell 代码应该是:

(define (f x)
(if (> x 0)
(+ x 1)))

您可能已经知道:在 haskell 中,undefined 是根据 error 定义的,主要在开发中用作占位符,稍后将被删除。定义你的 haskell 函数的正确方法是给它一个像这样的类型:Integer -> Maybe Integer

关于haskell - 在 MIT Scheme 中表示未定义的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14112546/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com