与神秘变量统一

时间:2016-09-30 12:33:38

标签: haskell ghc

在以下代码段中,我错误地使用entailFunctor t标记r,而不只是t。因此,当我尝试使用它时,我在范围内同时需要tr

{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeOperators #-}

import Data.Constraint
import Data.Tagged
import Data.Proxy

entailFunctor  :: Tagged (t r) (() :- (Functor t))
entailFunctor = undefined

newtype Foo t r = Foo (t r)

instance Functor (Foo t) where
  fmap f (Foo a) = Foo $ fmap f a \\ proxy entailFunctor (Proxy::Proxy (t r))

这是一个问题因为(至少我编写Functor实例的方式)r 在范围内不是。然而,这与GHC 8.0.1编译!这是一个错误,如果没有,那么类型变量rfmap的定义中引用了什么?

0 个答案:

没有答案