定义 Haskell 函数的经典方法是
f1 :: String -> Int
f1 ('-' : cs) -> f1 cs + 1
f1 _ = 0
我对在每一行都写函数名有点不满意。现在我通常以以下方式编写,使用模式保护扩展,并认为它更具可读性和修改友好性:
f2 :: String -> Int
f2 s
| '-' : cs <- s = f2 cs + 1
| otherwise = 0
您认为第二个示例更具可读性、可修改性和优雅性吗?生成的代码呢?(还没有时间查看脱糖输出,抱歉!)。什么是缺点?我唯一看到的是扩展用法。