如何在 ihaskell 笔记本中设置 OverloadedStrings?

How can I set OverloadedStrings in an ihaskell notebook?

我从 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

但是,当我尝试使用 OverloadedStrings 时,我没有看到任何成功。您可以从下面看到 T.lines 正在寻找 String 而不是 Text。为什么?

我有什么误解或做错了什么?

好消息:上面的笔记本确实正确加载了 OverloadedStrings。问题是您需要读取文件:

T.readFile

所以

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

这令人困惑,因为突出显示的错误是 T.lines 而不是 readFile. 结果 readFile 不会生成一种文本数据形式,该形式将自动转换为 T.lines(它产生 String,而不是 Text)。您必须知道有一个完全不同的函数可以调用,它确实可以做到这一点。类型系统不会为您在这些类似字符串的格式之间进行转换。您必须通过调用明确 returns 一个 Text 的文件读取函数来自己完成此操作:此处,T.readFile.