在一些Haskell代码中,我遇到了:
put :: s -> m ()
Run Code Online (Sandbox Code Playgroud)
这()意味着什么?
我使用搜索引擎,但找不到()正确处理的搜索引擎.
pig*_*ker 34
()意思是"无聊".这意味着无聊的类型包含一件事,也很无聊.通过将无聊类型的一个元素与另一个元素进行比较,没有什么有趣的,因为通过给予它任何注意力,没有什么可以学习无聊类型的元素.
它与空类型非常不同,在Haskell中称为(我希望人们选择一个更好的名字,就像我建议的那样)Void.空的类型是非常令人兴奋的,因为如果有人给你一个属于它的价值,你知道你已经死了,在天堂,你想要的任何东西都是你的.
但如果有人给你一个价值(),不要兴奋.把它扔掉
有时采用由"元素类型"参数化的类型构造函数并用in填充参数很有趣().您可以看到类型构造函数中固有的信息,而不是来自元素.例如,Maybe ()是的一个版本Bool,与Just ()或Nothing.此外,[()]相当于(可能是无限的)自然数:您拥有的唯一信息是长度.
所以,()意思是"无聊",但这通常是一个有趣的事情发生在其他地方的线索.
dfe*_*uer 17
如果不是奇怪的特殊语法,它可以定义为
data () = ()
Run Code Online (Sandbox Code Playgroud)
它是关于最无聊的类型.语法应该让你想到元组:(a,b)是一对,(a,b,c)是三元组等,()是一个0元组.唯一缺少的是1元组,它不能具有该语法,因为它会与通常使用的括号冲突.
()经常被用作没有有趣结果的东西的结果.例如,IO应该执行某些I/O并在不产生结果的情况下终止的操作通常具有类型IO ().它也可以在你需要一些无趣的输入时使用; GHC对此有特殊的语法,但在Haskell 98中,模仿Lisp的方式cond是这样的:
case () of
() | c1 -> e1
| c2 -> e2
...
| otherwise -> e3
Run Code Online (Sandbox Code Playgroud)
它是完全有效的,但也非常无聊,要问()你有什么类型的价值; 你可以拥有的只有一个合法的.
从"Haskell-as-almost-category"的观点来看,()是最终的对象.也就是说,对于任何类型X,只有一种合法的类型函数X -> (),即const ().从另一个方向,Void类型pigworker提到是一个初始对象.对于任何类型X,只有一种合法的类型函数Void -> X,即absurd.如果您有分类推理的心情,初始和最终对象可能有用.
它被称为“单位类型”。void在某些方面,您可以将其视为 Haskell 的 , 等价物。它是一种只有一个值(也是())的类型。
有专门针对Haskell的优秀搜索引擎.
http://hayoo.fh-wedel.de/?query=()会立即给你正确答案:
Data()
ghc-prim -GHC.Tuple
unit数据类型()有一个非undefined成员,nullary构造函数().
| 归档时间: |
|
| 查看次数: |
3175 次 |
| 最近记录: |