haskell - 如何在 Haskell 源文件中包含多行编号?

标签 haskell syntax

我想将大量常量粘贴到我的 Haskell 代码中,为了可读性,我希望将其格式化为多行而不是一行。

这可能吗?

最佳答案

你可以做一个准报价人。甚至可能想将其上传到 hackage:

module X where

import Language.Haskell.TH
import Language.Haskell.TH.Quote
import Data.Char

iQQ :: QuasiQuoter
iQQ = QuasiQuoter {
  quoteExp  = return . LitE . IntegerL . read . filter isDigit,

  quotePat  = \_ -> fail "illegal integer QuasiQuote \
                         \(allowed as expression only, used as a pattern)",
  quoteType = \_ -> fail "illegal integer QuasiQuote \
                         \(allowed as expression only, used as a type)",
  quoteDec  = \_ -> fail "illegal integer QuasiQuote \
                         \(allowed as expression only, used as a declaration)"
  }

和用途:
{-# LANGUAGE QuasiQuotes #-}
import X

value = [iQQ|123
456|]

导致:
Ok, two modules loaded.
*Main> value
123456

或者更大的数字:
value = [iQQ|
44444444444444444444444444444444444444444444444444444444444444444444444444444444
45555555555555555555555555555555555555555555555555555555555555555555555555555555
66666666666666666666666666666666666666666666666666666666666666666666666666666666
|]

在 GHCi 中:
Ok, two modules loaded.
*Main> value
444444444444444444444444444444444444444444444444444444444444444444444444444444444555555555555555555555555555555555555555555555555555555555555555555555555555555566666666666666666666666666666666666666666666666666666666666666666666666666666666

关于haskell - 如何在 Haskell 源文件中包含多行编号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56733918/

相关文章:

c - 忽略分号 C 语法

c - 来自 X11 库的 Haskell fetchName 不返回窗口的名称

haskell - 使用惰性文本和字节字符串处理非常大的文本文件

haskell - 有效访问像素

c# - 不必要的大括号会降低性能吗?

Ruby:多行条件语法:我该怎么做?

haskell - 使用 Haskell 从 zip 存档中提取单个文件

haskell - Langage.Haskell.TH.report 是如何工作的?

python - 如何通过点符号访问数据

c - 无法解密函数参数 : pointer and pointer to pointer