【发布时间】:2015-07-21 20:52:21
【问题描述】:
我有这个类型类。但它不能推断出从goal 返回的类型等于isGoal 的第一个变量的类型。如何解决这个问题?
{-# LANGUAGE TypeFamilies, FlexibleContexts #-}
class Problem p where
type State p :: *
data Action p :: *
goal :: Eq (State p) => State p
goal = undefined
isGoal :: Eq (State p) => State p -> Bool
isGoal s = s == goal
最终这样做了
class Problem p where
type State p :: *
data Action p :: *
goal :: p -> State p
goal = undefined
isGoal :: Eq (State p) => p -> State p -> Bool
isGoal p s = s == goal p
【问题讨论】:
-
如果您能以其他方式呈现错误消息,那就太好了。来自 Windows 控制台的屏幕截图,说真的……
-
它没有意识到您正在尝试使用同一实例中的
goal。 -
@leftaroundabout 从 Windows 控制台复制和粘贴很烦人,我可以理解更喜欢截屏。
-
@Ørjan Johansen 好吧,这比从 Windows 控制台屏幕截图复制和粘贴更烦人!问题是,为什么首先使用 Windows 控制台?除了完全切换到更好的操作系统外,还有 WinGHCi 的选项。
-
截屏的最大问题是不能保证图像将始终被托管和可用。请复制粘贴!
标签: haskell types ghc typeclass