获取子列表

时间:2017-08-03 19:40:00

标签: haskell

使用包singletons,我们有一个类SingI和类型级列表实例:

instance SingI '[]
instance forall a (n1 :: a) (n2 :: [a]).
     (SingI n1, SingI n2) => SingI (n1 : n2)

似乎对列表使用SingI约束我们可以以某种方式得到子列表的相同约束。所以我想找到一种方法来做到这一点。

即。我需要像函数

这样的东西
f1 :: Sing (ns :: [Symbol]) -> Proxy (xs :: [Symbol]) -> Sing (ns :\\ xs)

f2 :: Sing (ns :: [Symbol]) -> Proxy (xs :: [Symbol]) -> Sing (Intersect ns xs)

我必须采取哪些方式?

0 个答案:

没有答案