我正在调查Hana,我很惊讶地看到它有一个type
(“排序类型的容器,类似于没有实际值的单元组”的概念),但是types(一系列type
)是一个实验性功能。为什么boost :: hana :: experimental :: types是一个实验性功能?关于类型列表有什么棘手的问题?
有谁知道为什么?与单一类型的容器相比,类型列表的复杂性如何?
我正在调查Hana,我很惊讶地看到它有一个type
(“排序类型的容器,类似于没有实际值的单元组”的概念),但是types(一系列type
)是一个实验性功能。为什么boost :: hana :: experimental :: types是一个实验性功能?关于类型列表有什么棘手的问题?
有谁知道为什么?与单一类型的容器相比,类型列表的复杂性如何?
答案基本上是什么杰森说:
我想看到的类型为
hana::Sequence
,但它不会通过的法律,因为它不会举办任何类型的值(如与价值观运行时状态)。
“问题”是一个hana::types
不能进行一个hana::Sequence
,因为hana::Sequence
应该是能够保存任意的东西,不仅类型。虽然这可能看起来不是什么大不了的事情,但事实确实如此。例如,我们也无法满足hana::Monad
,因为这需要hana::flatten
,其签名是M<M<T>> -> M<T>
,对于任意hana::Monad
M
。由于hana::types
只能存放类型,因此您无法整个事情没有特殊的外壳。
无论解决方案是什么,我想找到一个解决方案,不会破坏Hana的概念完整性,同时仍然允许编译时更有效的类型列表。
谢谢你回答,并把这么多的精神努力,让事情正确和优雅。我会花我的时间消化答案:) – blue
谢谢。当事情是优雅的时候,这很好,但当它们既优雅又让我们做我们想做的一切时更好。显然,这里还有很多工作要做。 –
'实验'子''空间'的实际相关性是什么? – Walter
@沃尔特请提出一个新问题,而不是将问题作为对其他无关问题的评论。 –
在任何情况下,@ Walter's都是一个简单的问题:从用户手册:“这个目录包含的实验性功能可能会或可能不会在某些时候进入到图书馆,但被认为是有用的,足以向公众提供。此子目录中的功能驻留在hana :: experimental命名空间中,并且不要指望这些功能是稳定的;它们可能会在库的各个发行版之间移动,重命名,更改或移除这些功能可能还需要额外的外部依赖项;每个功能记录了它所需的附加依赖关系,如果有的话。“ – blue