k4v*_*vin 2 haskell functional-programming
在前奏中,我刚检查了()的类型是什么意思
Prelude> :type ()
() :: ()
Run Code Online (Sandbox Code Playgroud)
我知道当你不想做任何事情时,你可以从函数中返回它.那里到底发生了什么?
正如李所说,()碰巧既是一个类型的名称,也是它唯一的构造函数.基本上,它与您定义的相同
data Unit = Unit
f :: Unit -> Int
f Unit = 7
Run Code Online (Sandbox Code Playgroud)
...当构造函数不是nullary时,可能不那么混乱:
newtype MyInt = MyInt Int
g :: MyInt -> Int
g (MyInt i) = i
Run Code Online (Sandbox Code Playgroud)
请注意,在每种情况下,两个"相等"名称都存在于完全独立的名称空间中:将示例读作
data T???S????.Unit = V????S????.Unit
newtype T???S????.MyInt = V????S????.MyInt Int
V????S????.MyInt 7 :: T???S????.MyInt
V????S????.Unit :: T???S????.Unit
V????S????.() :: T???S????.()
Run Code Online (Sandbox Code Playgroud)
你的表征
我知道当你不想做任何事情时,你可以从函数中返回它
从程序的角度来看,这是正确的,但在Haskell中,"做任何事情"并不是一个有意义的事情:函数永远不会 "做任何事情",它们只会产生结果.并且具有结果类型的函数()也不例外:它产生结果,只有结果不包含实际信息.
有关进一步的参考,请参阅Haskell中的什么是()?.
| 归档时间: |
|
| 查看次数: |
123 次 |
| 最近记录: |