gpt4 book ai didi

haskell - 是否可以在类型类声明和/或实例化中使用 GHC.Stack.HasCallStack?

转载 作者:行者123 更新时间:2023-12-02 10:14:00 33 4
gpt4 key购买 nike

假设我有这个类型类:

import GHC.Stack

class Foo a where
foo :: a
instance Foo Int where
foo = undefined

如何将 HasCallStack 约束添加到 foo 值?我试过这样:

class (HasCallStack) => Foo a where
foo :: a
instance (HasCallStack) => Foo Int where
foo = undefined

我收到如下类型错误:

source.hs:10:1: error:
• Illegal implicit parameter ‘?callStack::CallStack’
• In the context: HasCallStack
While checking the super-classes of class ‘Foo’
In the class declaration for ‘Foo’

我也尝试过仅对类或实例施加约束。在这两种情况下我都遇到了类似的错误。

这有可能吗?或者不可能获取类成员的调用堆栈?如果能够以某种方式获取调用堆栈,这将帮助我更轻松地调试某些东西。

最佳答案

您只需要在 foo 的调用站点上有一个堆栈,因此可以编译,并且我相信它将按预期传播隐式:

class Foo a where
foo :: HasCallStack => a

关于haskell - 是否可以在类型类声明和/或实例化中使用 GHC.Stack.HasCallStack?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51519883/

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