如何在Haskell中处理未装箱的类型

达内尔·雅伊茨科夫(Daneel Yaitskov)

有针对Int,Float等的未装箱类型的GHC。我知道基于它们构建的代码以较少的开销运行,但是我看不到如何基于未装箱的Int向函数输入数据或从中输出数据的方法,即

GHC.Exts定义了函数(+#)和(*#),但是我找不到装箱/拆箱的功能

  readInt:: String -> Int#
  showInt:: Int# -> String

  boxInt :: Int# -> Int
  unboxInt :: Int -> Int#

实例Show Int#和实例Read Int#不存在,因为show和read多态。

没有这些功能,如何将未装箱类型的优化代码块与其余应用程序集成在一起?

高温超净水

IntFloat等等只是dataGHC中的类型:

data Int = I# Int#
data Float = F# Float#
-- etc.

构造函数仅由导出GHC.Exts导入并使用构造函数进行转换:

{-# LANGUAGE MagicHash #-}

import GHC.Exts

main = do I# x <- readLn
          I# y <- readLn
          print (I# (x +# y))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章