繁体   English   中英

()在Haskell中意味着什么

[英]What does () mean in Haskell

在一些Haskell代码中,我遇到了:

put :: s -> m ()

()在这里意味着什么?

我使用搜索引擎,但我找不到正确处理()的搜索引擎。

()表示“无聊”。 这意味着无聊的类型包含一件事,也很无聊。 通过将无聊类型的一个元素与另一个元素进行比较,没有什么有趣的,因为通过给予它任何注意力,没有什么可以学习无聊类型的元素。

它与空类型非常不同,在Haskell Void称为(我希望人们选择一个更好的名字,就像我建议的那样)。 空的类型是非常令人兴奋的,因为如果有人给你一个属于它的价值,你知道你已经死了,在天堂,你想要的任何东西都是你的。

但如果有人给你一个()的价值,不要兴奋。 把它扔掉

有时采用由“元素类型”参数化的类型构造函数并使用()填充参数很有趣。 您可以看到类型构造函数中固有的信息,而不是来自元素。 例如, Maybe ()Bool一个版本,有Just ()Nothing 此外, [()]相当于(可能是无限的)自然数:您拥有的唯一信息是长度。

所以, ()意思是“无聊”,但这通常是一个有趣的事情发生在其他地方的线索。

如果不是奇怪的特殊语法,它可以定义为

data () = ()

它是关于最无聊的类型。 语法应该让你想到元组: (a,b)是一对, (a,b,c)是三元组等, ()是0元组。 唯一缺少的是1元组,它不能具有该语法,因为它会与通常使用的括号冲突。

()经常被用作没有有趣结果的东西的结果。 例如,应该执行某些I / O并在不产生结果的情况下终止的IO操作通常具有类型IO () 它也可以在你需要一些无趣的输入时使用; GHC有特殊的语法,但在Haskell 98中,模仿Lisp的cond是这样的:

case () of
  () | c1 -> e1
     | c2 -> e2
     ...
     | otherwise -> e3

它是完全有效的,但也非常无聊,要问你有什么类型的值() ; 你可以拥有的只有一个合法的。

从“Haskell-as-almost-category”的观点来看, ()最终的对象 也就是说,对于任何类型X只有一个类型为X -> ()合法函数,即const () 从另一个方向来看, Void型pigworker提到的是一个初始对象 对于任何类型X只有一个类型为Void -> X合法函数Void -> X ,即absurd 如果您有分类推理的心情,初始和最终对象可能有用。

有专门针对Haskell的优秀搜索引擎。

http://hayoo.fh-wedel.de/?query=()会立即给你正确答案:

Data ()
ghc-prim -GHC.Tuple


unit datatype ()有一个非undefined成员,nullary constructor ()

它被称为“单位类型” 在某些方面,您可以将其视为Haskell等同于void 它是一种只有一个值(也是() )的类型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM