优秀PureScript book解释说,为什么不Eff为具有最后返回值
fullName :: forall r. Record (firstName :: String, lastName :: String | r) -> String
fullName person = person.firstName <> " " <> person.lastName
的箭头,然后比较Eff
单子
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
的签名在单元之前包含->
即
main :: forall eff. Eff (console :: CONSOLE, random :: RANDOM | eff) -> Unit
这将使类似-> String
如在fullName
从同一章节(重点煤矿)的摘录的签名:
主要是有副作用的计算,它可以运行在支持随机数生成和控制台IO, 和任何其它类型的副作用任何 环境,并且其返回类型的值 单位
。
你明白这意味着什么的那种['Eff'](https://pursuit.purescript.org/packages/purescript-eff/2.0.0/docs /Control.Monad.Eff#t:Eff)是'#! - > * - > *'? –
有点。我重读了它,它确实告诉我的理解。谢谢 – RAbraham