【发布时间】:2013-02-28 12:17:29
【问题描述】:
我想在我的代码中为一些本地函数添加类型签名。但是,它们的类型涉及匿名的、存在绑定的类型变量。由于它们是匿名的,我不知道如何编写类型签名。如何引用此类类型变量?
在以下示例中,go 的类型为 [b] -> Int -> Int,其中 b 是由模式匹配 T (x_shared:xs) g 绑定的类型。我可以为它写什么类型的签名?
data T = forall a. T [a] (a -> a -> Int)
f :: T -> Int
f (T (x_shared:xs) g) = go xs 0
where
-- go :: what type?
go (x:xs) n = go xs $! n + g x_shared x
go [] n = n
【问题讨论】:
-
你可能会觉得这很有用:stackoverflow.com/questions/13828602/…