Integer ->-6ren">
gpt4 book ai didi

debugging - "No operation" haskell

转载 作者:行者123 更新时间:2023-12-04 11:39:53 24 4
gpt4 key购买 nike

如果我在学校没记错的话,有一个函数或关键字用于“尚未实现”,但代码可以编译。我试图搜索它,但找不到。有人知道我在找什么吗?

有点像

isDivisor :: Integer -> Integer -> Bool
isDivisor x y = None
--isDivisor x y = (rem x y) == 0

最佳答案

你想到的叫bottom
bottom 不仅用于显示未实现的内容,还用于表示导致我们的程序失败的计算。

例如我们实际上可以定义undefined我们自己是一个无限循环

undefined = let x = x in x
undefined = undefined

所以实际上我们所做的只是输入一个值 undefined :: a这将导致或程序永远崩溃或循环,但永远不会评估它。

因此,如果您有一些不知道如何实现的大而复杂的功能,您可以这样做
foo :: Bar -> Baz -> Quux
foo bar baz = foo bar baz

由于这个类型检查,它会编译,我们可以测试我们程序的其他部分。

然而,由于当你不小心运行程序的那部分时出现无限循环是非常无益的,GHC 和其他人实现了 undefined。作为一个不同的。他们让程序崩溃并发出错误消息,例如:
-- In GHC
error msg = throw (ErrorCall s)
undefined = error "Prelude.undefined"

因此,要保留具有更好调试功能的未定义函数
foo bar baz = undefined
foo bar baz = error ("Tried to evaluate foo with" ++ show bar ++ show baz)

如果您发现底部的概念令人困惑,hammar 发布了一个很棒的 answer

关于debugging - "No operation" haskell ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16692670/

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