相关疑难解决方法(0)

为什么未使用未装箱类型的未定义函数是levity-polymorphic?

我刚读完Levity Polymorphism这篇论文.

我有一个问题,undefined当用作未装箱的类型时,为什么可以是levity-polymorphic.

首先,让我们从论文的一些盒子定义开始:

  • 盒装:

    • 装箱值由指针到堆中表示.

    • Int并且Bool是具有盒装值的类型的示例.

  • 未装箱:

    • 装箱的值由值本身表示(不是指向堆的指针).

    • Int#Char#从所述GHC.Prim模块是类型与实例装箱值.

    • 装箱的值不能是thunk.必须通过值传递未装箱类型的函数参数.

本文遵循一些轻浮的定义:

  • 举起:

    • 抬起类型是一个是懒.

    • 解除类型具有超出了正常的人额外元件上,表示非终止计算.

    • 例如,该类型Bool提升,这意味着存在用于三个不同的值Bool:True,False,和?(底部).

    • 所有提升类型必须装箱.

  • 未提升

    • 提升的类型是严格的类型.

    • 该元素?不存在于未提升类型中.

    • Int#并且Char#是未提升类型的例子.

本文接着解释了GHC …

polymorphism haskell representation

14
推荐指数
1
解决办法
261
查看次数

标签 统计

haskell ×1

polymorphism ×1

representation ×1