类型级编程在运行时意味着什么?

时间:2018-05-11 00:11:14

标签: haskell

我对Haskell很新,如果这是一个基本问题,或者基于不稳定理解的问题,那就很抱歉

类型级编程对我来说是一个很有意思的想法。我认为我得到了基本的前提,但我觉得还有另一面对我来说是模糊的。我认为这个想法是使用类型将逻辑和计算带入编译时而不是运行时。这样,您可以将通常的运行时逻辑/状态/数据转换为静态逻辑,例如收藏的大小。

所以我得到了例如你可以有类型级自然数,并对这些自然数进行类型级算术,所有这些计算和类型安全性都在编译时进行。

但这种算术在运行时意味着什么呢?特别是因为Haskell具有完全类型的擦除。例如,

  • 如果我连接两个类型级别列表,那么类型级别安全性是否意味着在运行时该连接的行为或性能?或者类型级编程方面只在编译时有意义,当程序员正在努力解决代码并将事物放在一起时?
  • 或者,如果我有两个类型级别编号,然后将它们相乘,那么这在运行时意味着什么?如果这些大数字操作在编译时很慢,那么它们是否会在运行时瞬间完成?
  • 或者,如果我们implemented type level RSA然后使用它,那在运行时甚至意味着什么呢?

它纯粹是编译时安全/一致性工具吗?或类型级编程是否也为运行时购买任何东西?逻辑和算术是否在编译时支付了#39;或者仅仅在编译时确保' (如果这有意义的话)?

0 个答案:

没有答案