相关疑难解决方法(0)

在功能编程中,将不完整的模式匹配视为不好的做法

在Haskell或F#等函数式语言中使用非详尽的模式机制通常被认为是一种不好的做法,这意味着指定的案例并未涵盖所有可能的输入案例?

特别是,我应该允许代码失败MatchFailureException等,还是应该总是覆盖所有情况并在必要时明确抛出错误?

例:

let head (x::xs) = x
Run Code Online (Sandbox Code Playgroud)

要么

let head list = 
    match list with
    | x::xs -> x
    |    _  -> failwith "Applying head to an empty list"
Run Code Online (Sandbox Code Playgroud)

F#(与Haskell不同)给出了第一个代码的警告,因为[]-case没有被覆盖,但为了简洁起见,我可以忽略它而不破坏功能样式约定吗?MatchFailure确实很好地说明了问题......

f# haskell functional-programming

32
推荐指数
4
解决办法
2452
查看次数

标签 统计

f# ×1

functional-programming ×1

haskell ×1