【发布时间】:2020-05-27 17:57:18
【问题描述】:
我有两个函数可以将异构列表向右/向左旋转:
hRotateRight :: (HInit xs, HLast xs) => HList xs -> HList (HLastR xs ': HInitR xs)
hRotateRight xs = hLast xs `HCons` hInit xs
hRotateLeft :: HSnoc xs x => HList (x ': xs) -> HList (HSnocR xs x)
hRotateLeft (x `HCons` xs) = hSnoc xs x
显然,这两个函数都有不同的输入和输出类型(输入是单例时除外)。但是,它们确实具有函数的任何输出也可以是输入的特性,即函数可以被迭代。
我正在 Haskell 中寻找一种类型安全的方法来做到这一点(我不确定这是否可能)。谢谢!
【问题讨论】:
标签: haskell