Отличная 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
отрывок из той же главы (курсив мой):
основной является вычисление с побочными эффектами, которые могут быть запущены в любой среде, которая поддерживает генерации случайных чисел и консоль ввода-вывода, и любые другие виды побочного эффекта, и который возвращает значение типа блок
.
Вы понимаете, что это означает, что вид [ 'Eff'] (https://pursuit.purescript.org/packages/purescript-eff/2.0.0/docs /Control.Monad.Eff#t:Eff) является '#! -> * -> * '? –
Немного. Я перечитал это, и это действительно помогает понять мое понимание. благодаря – RAbraham