haskell - Haskell 的隐藏功能

标签 haskell

Haskell 编程语言有哪些鲜为人知但有用的功能。 (我知道这门语言本身不太为人所知,但请与我一起工作。即使是对 Haskell 中简单事物的解释,例如用一行代码定义斐波那契数列,也会得到我的支持。)

  • 尝试将答案限制在 Haskell 核心
  • 每个答案一个功能
  • 提供该功能的示例和简短描述,而不仅仅是文档链接
  • 使用粗体标题作为第一行来标记功能

最佳答案

用户定义的控制结构

Haskell 没有速记三元运算符。内置的 if-then-else 始终是三元的,并且是一个表达式(命令式语言往往有 ?:=表达式,if=语句)。不过,如果你愿意的话,

True ? x = const x
False ? _ = id

(?)定义为三元运算符:

(a ? b $ c)  ==  (if a then b else c)

您必须求助于大多数其他语言中的宏来定义您自己的短路逻辑运算符,但 Haskell 是一种完全惰性的语言,因此它可以正常工作。

-- prints "I'm alive! :)"
main = True ? putStrLn "I'm alive! :)" $ error "I'm dead :("

关于haskell - Haskell 的隐藏功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/211216/

相关文章:

scala - 在自由单子(monad)的背景下,Haskell 是否有注入(inject)等价物

haskell - 如何使用 Haskell 读取以指数形式写入的整数?

algorithm - 优化 Haskell 中的 "list"索引

haskell - 为什么类型同义词中的类约束需要 RankNTypes

haskell - 我可以加速这个 Haskell 算法吗?

haskell - 使用 Network.Browser 创建 cookie

haskell - (<*) 和 (*>) 的定义

haskell - 如何分析具有大量 System.Process.read 进程的 Haskell 程序?

haskell - 如何确保主线程在所有其他线程结束后结束?

haskell - 如何在Haskell中使用 "let"关键字定义多个变量