Я экспериментирую с HList типизированными гетерогенными списками.
Я определил следующее:
import Data.HList
data ATag
data BTag
type TagList = ATag :*: BTag :*: HNil
bIndex :: Int
bIndex = hNat2Integral (hFind (undefined :: BTag) (undefined :: TagList))
Я ожидал, что bIndex
будет иметь значение 1. Вместо этого я получаю следующую ошибку:
No instances for (HEq BTag ATag b,
HFind' b BTag (HCons BTag HNil) n0)
arising from a use of `hFind'
Похоже, что GHC (7.4.1) не может автоматически определить экземпляр
HEq BTag ATag HFalse
Есть ли способ сделать это?