Haskell 如何将monad transformer添加到Spock应用程序中?
我有一个基本的hello world Spock应用程序,下面是,但现在我想以某种方式将我自己的monad transformer,Haskell 如何将monad transformer添加到Spock应用程序中?,haskell,monads,monad-transformers,haskell-spock,Haskell,Monads,Monad Transformers,Haskell Spock,我有一个基本的hello world Spock应用程序,下面是,但现在我想以某种方式将我自己的monad transformer,FooT,添加到Spock transformer堆栈中 我找到了,但它看起来好像在最新版本的spock中没有真正使用spockT。看起来现在有一个spock函数,它接受一个SpockCfg和一个SpockM,但是我没有看到任何接受一个m参数的函数,在这里我可以指定我的monad转换器。是否仍然可以以某种方式将FooT、StateT或任何其他monad转换器插入sp
FooT
,添加到Spock transformer堆栈中
我找到了,但它看起来好像在最新版本的spock中没有真正使用
spockT
。看起来现在有一个spock
函数,它接受一个SpockCfg
和一个SpockM
,但是我没有看到任何接受一个m
参数的函数,在这里我可以指定我的monad转换器。是否仍然可以以某种方式将FooT
、StateT
或任何其他monad转换器插入spock transformer堆栈?我误解了什么?谢谢大家! 您使用的是哪个版本的Spock?看一下,似乎SpockM
只是SpockCtxT
的类型别名,它是一个monad转换器,别名在内部使用。也许在这个堆栈中的某个地方添加Statet
会起作用。我的版本是0.13.0.0。是的,看起来他们使用的转换器堆栈是SpockCtxT->WebStateT->ResourceT->IO,但是没有明显的方法在任何地方插入m
。目前我的最佳猜测是,他们希望您返回到spockT
函数以使用自定义monad,但随后您将失去spock
、SpockCfg
和SpockM
的所有优秀功能。