如何在 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
.
我从 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
.