Может кто-нибудь объяснить мне, что следующий синоним средство и как читать:определение синонима Haskell
type TCM a = ErrorT String (StateT MyEnv IO) a
То, что я был в состоянии понять до сих пор:
мы говорим, что мы вводим новое имя для некоторого типа, и теперь мы говорим, что мы называем его TCM и имеет некоторый параметр a
У нас есть конструктор значений ErrorT (что делает ErrorT?), который принимает три аргумента: String, (StateT MyEnv IO) и a
(StateT MyEnv IO) - здесь мы говорим, что у нас есть конструктор состояний StateT и args MyEnv и IO. Но что делает этот тип?
Я прав? Может ли кто-нибудь объяснить мне, как это работает? Спасибо за любые ответы.
Редактировать: Возможно, кто-то может помочь мне и этим. Я STH следующую функцию в моей программе, оценить Integer:
ms_exp :: Exp -> TCM()
ms_exp (EInt integer) = do
return integer
и имеют такую ошибку:
Couldn't match expected type `()' with actual type `Integer'
Любые намеки?
ErrorT и StateT не являются конструкторами значений, а конструкторами типа.Правая часть определения типа - это всего лишь тип. – Ingo