代码之家  ›  专栏  ›  技术社区  ›  Mittenchops

如何在ihaskell笔记本中设置重载字符串?

  •  1
  • Mittenchops  · 技术社区  · 5 年前

    sample notebook 我应该能够如下启用和禁用扩展:

    -- We can disable extensions. 
    :ext NoEmptyDataDecls 
    data Thing
    
    <interactive>:1:1: error:
        • ‘Thing’ has no constructors (EmptyDataDecls permits this)
        • In the data declaration for ‘Thing’
    
    -- And enable extensions.
    :ext EmptyDataDecls
    data Thing
    

    但是,当我尝试使用重载字符串时,没有看到任何成功。从下面可以看出,T.lines寻找的是字符串而不是文本。为什么?

    enter image description here

    0 回复  |  直到 5 年前
        1
  •  0
  •   Mittenchops    5 年前

    好消息:上面的笔记本确实正确加载了重载字符串。问题是您需要使用以下内容读取文件:

    T.readFile
    

    main :: IO ()
    main = do
      text <- T.readFile "./data.txt"
      print $ T.lines text
    

    这很混乱,因为错误突出显示 T.lines readFile. 结果是 readFile 不会生成将自动转换为 T.lines公司 (它产生 String ,不是 Text ). 你必须知道还有一个完全不同的函数可以调用。类型系统不会为您在这些类似字符串的格式之间进行转换。您必须通过调用显式返回 文本 :这里, T.readFile