我看到最新版本的GHC支持类型级别列表。然而,我的应用需要处理类型级别集合,并且我想基于类型级别列表实现一个类型级别集合库。但是我不知道从哪里开始 :(
是否有支持Haskell中类型级别集合的库?
我看到最新版本的GHC支持类型级别列表。然而,我的应用需要处理类型级别集合,并且我想基于类型级别列表实现一个类型级别集合库。但是我不知道从哪里开始 :(
是否有支持Haskell中类型级别集合的库?
{-# LANGUAGE FlexibleInstances #-}
import Data.HList
class (HList l, HSet l) => ThisIsSet l where
-- Here we have @l@ which is @HList@ _and_ @HSet@.
test :: l
-- This is ok:
instance ThisIsSet HNil where
test = hNil
-- And this:
instance ThisIsSet (HCons HZero HNil) where
test = hCons hZero hNil
-- And this (HZero != HSucc HZero):
instance ThisIsSet (HCons HZero (HCons (HSucc HZero) HNil)) where
test = hCons hZero (hCons (hSucc hZero) hNil)
-- This is an error since HSucc HZero == HSucc HZero:
instance ThisIsSet (HCons (HSucc HZero) (HCons (HSucc HZero) HNil)) where
test = hCons (hSucc hZero) (hCons (hSucc hZero) hNil)