Этот код скомпилирован в порядке:
data None = None { _f :: Int }
type Simpl = Env
type Env = Int
Однако я получил ошибку с этим кодом:
{-# LANGUAGE TemplateHaskell #-}
import Control.Lens
data None = None { _f :: Int }
type Simpl = Env
makeLenses ''None
type Env = Int
Ошибка:
Not in scope: type constructor or class `Env'
Я просто добавил одну строку makeLenses ''None
между объявлениями типа.
Это означает, что код TemplateHaskell может изменить область конструктора типов?
Кто-нибудь знает подробности об этой проблеме (или как избежать этой проблемы)?