如何制作类型Showable?
while read -r line; do
echo "${line:2:2}${line:0:2}"
done < file.txt
通常情况下,我会输入type InterpreterMonad = StateT (Env, Env) (ErrorT String IO ) ()
,但我有deriving Show
而不是type
或newtype
。
P.S。如何使用data
编写上述内容?
答案 0 :(得分:4)
type
创建一个类型同义词。如果要创建实例,则必须为类型同义词的目标创建它 - 在本例中为StateT (Env, Env) (ErrorT String IO ) ()
。但是,GHC无法为Show
类型派生StateT
个实例,因为StateT
是函数类型的包装,而GHC无法导出Show
功能类型。
您可以按如下方式编写新类型:
newtype InterpreterMonad = MkInterpreterMonad (StateT (Env, Env) (ErrorT String IO ) ())
但是这不允许你导出Show
,因为InterpreterMonad
现在是围绕函数类型的包装器的包装器。