Joa*_*nge 6 haskell programming-languages reference
出于兴趣,我想阅读有关这样设计的语言.哈斯克尔是一个,对吧?
我说的是执行此操作的语言,但也有编译器支持来捕获问题,如果它可以为空,那么你必须有适当的案例,处理编译等.
它也只是函数式编程中的一个概念吗?它是否也存在于某些OO语言中?
只是为了回答你问题的第一部分,你是对的,Haskell 没有可以是任何类型的特殊“空”值。
如果您想要这种行为,则必须更改函数的返回类型。通常,您为此使用 Maybe 类型,例如:
safeDiv :: Float -> Float -> Maybe Float
safeDiv a b
| b == 0 = Nothing
| otherwise = Just (a / b)
Run Code Online (Sandbox Code Playgroud)
这表示 safeDiv 接受两个 Float 并返回一个 type Maybe Float。在函数体内,Nothing如果 b 为零,我可以返回,否则我返回Just (a / b)。
关键是你的类型签名明确地标记了你的函数是否可以返回Nothing,并且任何调用者都将被迫以某种方式处理这两种可能的情况。
然而,Haskell 确实有可以抛出和捕获的异常。对于纯函数,最好返回 Maybe 值,而不是仅仅抛出错误,但即使某些 Prelude(基础库)函数也是不安全的。例如,head返回列表的第一个元素,如果列表为空,则会抛出错误,而不是返回包含在 Maybe 中的值。
| 归档时间: |
|
| 查看次数: |
358 次 |
| 最近记录: |