haskell 中的类型 () :: () 是什么意思?
what is the type () :: () in haskell means?
在前奏中我只是检查了 () 的类型它到底是什么意思
Prelude> :type ()
() :: ()
我知道您可以 return 当您不想做任何事情时,可以从函数中执行此操作。那里到底发生了什么?
()
(发音单位)既是类型的名称,也是该类型的单个值。因此,'The value ()
has type ()
' 的表达方式与
相同
:t "Hello"
"Hello" :: String
不同的命名空间
正如 Lee 所说,()
恰好既是类型的名称,也是其唯一构造函数的名称。基本上,它和你定义的一样
data Unit = Unit
f :: Unit -> Int
f Unit = 7
...当构造函数不是 nullary 时,可能会减少混淆:
newtype MyInt = MyInt Int
g :: MyInt -> Int
g (MyInt i) = i
请注意,在每种情况下,两个“相同”的名称都位于完全独立的命名空间中:请阅读示例
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ᴄᴏᴘᴇ.()
关于单位类型
你的性格
I know you can return this from a function when you don't want to do any thing
从程序的角度来看是正确的,但在 Haskell 中,“做任何事情”并不是真正有意义的事情:函数 never “做任何事情”,他们只会产生结果。结果类型为 ()
的函数也不例外:它产生一个结果,只是结果不包含任何实际信息。
如需进一步参考,请参阅 What is () in Haskell, exactly?。
在前奏中我只是检查了 () 的类型它到底是什么意思
Prelude> :type ()
() :: ()
我知道您可以 return 当您不想做任何事情时,可以从函数中执行此操作。那里到底发生了什么?
()
(发音单位)既是类型的名称,也是该类型的单个值。因此,'The value ()
has type ()
' 的表达方式与
:t "Hello"
"Hello" :: String
不同的命名空间
正如 Lee 所说,()
恰好既是类型的名称,也是其唯一构造函数的名称。基本上,它和你定义的一样
data Unit = Unit
f :: Unit -> Int
f Unit = 7
...当构造函数不是 nullary 时,可能会减少混淆:
newtype MyInt = MyInt Int
g :: MyInt -> Int
g (MyInt i) = i
请注意,在每种情况下,两个“相同”的名称都位于完全独立的命名空间中:请阅读示例
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ᴄᴏᴘᴇ.()
关于单位类型
你的性格
I know you can return this from a function when you don't want to do any thing
从程序的角度来看是正确的,但在 Haskell 中,“做任何事情”并不是真正有意义的事情:函数 never “做任何事情”,他们只会产生结果。结果类型为 ()
的函数也不例外:它产生一个结果,只是结果不包含任何实际信息。
如需进一步参考,请参阅 What is () in Haskell, exactly?。