是否需要访问一个单子写的单子变压器的内部结构?
例如:我想有GetT
-变压器Get
来自Data.Binary.Get单子,但此模块不公开的内部Get
单子。 这是否意味着我的唯一方法是添加GetT
直接Data.Binary.Get模块?
是否需要访问一个单子写的单子变压器的内部结构?
例如:我想有GetT
-变压器Get
来自Data.Binary.Get单子,但此模块不公开的内部Get
单子。 这是否意味着我的唯一方法是添加GetT
直接Data.Binary.Get模块?
在一般情况下,是的。 请参见本例是如何内单子(这里的列表单子)可以“撤销”外单子的“早期”行动的效果:
> execWriterT (tell "Hi" >> tell "Ho" >> lift [()])
["HiHo"]
> execWriterT (tell "Hi" >> tell "Ho" >> lift [])
[]
现在,假设你可以把每一个单子到单子转换。 然后,你就可以构建一个IOT
单子转换,这可能会发射导弹,但随后撤消它:
> execIOT (launchMissile >> lift [])
因此,它不可能把一个任意的单子,不看的定义,成为一个单子转换。