从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在寻找字符串而不是文本。为什么?
我误解或做错了什么?
答案 0 :(得分:0)
好消息:上面的笔记本确实已正确加载OverloadedStrings。问题是您需要使用以下命令读取文件:
T.readFile
所以
main :: IO ()
main = do
text <- T.readFile "./data.txt"
print $ T.lines text
这令人困惑,因为错误突出显示了T.lines
而不是readFile.
事实证明readFile
不会产生文本数据形式,该文本数据会自动转换为{{1 }}(它产生T.lines
,而不是String
)。您必须知道,还有另一个完全可以调用此功能的函数。类型系统不会为您在这些类似字符串的格式之间进行转换。您必须自己执行此操作,方法是调用一个文件读取函数,该函数显式返回一个Text
:这里是Text
。