【发布时间】:2016-12-01 00:03:50
【问题描述】:
优秀的PureScript book 解释说
fullName :: forall r. Record (firstName :: String, lastName :: String | r) -> String
fullName person = person.firstName <> " " <> person.lastName
然后比较Eff monad
import Prelude
import Control.Monad.Eff.Random (random)
import Control.Monad.Eff.Console (logShow)
main :: forall eff. Eff (console :: CONSOLE, random :: RANDOM | eff) Unit
main = do
n <- random
logShow n
我的问题是:
为什么main的签名在Unit之前没有->,即
main :: forall eff. Eff (console :: CONSOLE, random :: RANDOM | eff) -> Unit
这将使它类似于-> String 的签名,就像fullName 的签名一样
同一章节的摘录(强调我的):
main 是一个有副作用的计算,它可以在任何 支持随机数生成和控制台 IO 的环境, 和任何其他类型的副作用,并且返回类型的值 单位
.
【问题讨论】:
-
你明白
Eff是# ! -> * -> *是什么意思吗? -
一点。我重读了它,它确实告诉了我的理解。谢谢
标签: purescript