gpt4 book ai didi

haskell - 如何编写一个函数,该函数的行为取决于变压器堆栈基础上的 monad

转载 作者:行者123 更新时间:2023-12-02 14:24:26 28 4
gpt4 key购买 nike

(此时,这更像是一个我想知道如何解决的难题,而不是我希望在实践中使用的解决方案)

我正在尝试编写一个具有以下规范的函数runDebug:其参数的类型为IO ();它的返回类型是(Monad m) => m ();根据m,它以两种不同方式之一运行;如果 MonadIO m,则 runDebug = liftIO,否则 runDebug = const (return ())

我尝试过的方法依赖于像这样的类型类

class MonadDebug m where
runDebug :: IO () -> m ()

我尝试过使用 MonadBase,并且尝试过将 MonadIO 与重叠实例一起使用,但它们都遇到了模糊性问题。

我认为我可以通过为每个变压器编写实例来获得一些有用的东西,但我一直希望避免这种情况。

最佳答案

为您有兴趣支持的每个转换器和每个基本 monad 编写 MonadDebug 实例。

关于haskell - 如何编写一个函数,该函数的行为取决于变压器堆栈基础上的 monad,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30649658/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com