我正在研究Hana,我惊讶地发现它有一个概念type
(一种“类型的容器”,类似于没有实际值的单元素元组),但类型(的序列type
)是实验特征。
有谁知道为什么?与单一类型的容器相比,类型列表有什么复杂之处?
答案基本上就是杰森所说的:
我希望将类型视为 a
hana::Sequence
但它不会通过法律,因为它不会持有任何类型的值(例如具有运行时状态的值)。
“问题”是 ahana::types
不能成为 a hana::Sequence
,因为 ahana::Sequence
应该能够容纳任意事物,而不仅仅是类型。虽然这可能看起来没什么大不了的,但实际上确实如此。例如,我们也无法满足hana::Monad
,因为这需要hana::flatten
,其签名是M<M<T>> -> M<T>
任意的hana::Monad
M
。由于hana::types
只能保存类型,因此如果不对hana::types<hana::types<int, char>, hana::types<float, long>>
整个事物进行特殊处理,您就无法拥有例如。
无论解决方案是什么,我都想找到一个不会破坏 Hana 概念完整性的解决方案,同时仍然允许更高效的编译时间类型列表。