首先,我想告诉您,我是Haskell的新手,我正在努力了解解析器在haskell中的工作原理。所以我基本上试图从http://www.gutenberg.org/files/57071/57071-0.txt解析这个电子书并分析文本。喜欢输出英文单词,句子和段落的数量等。 这是我的代码:
<View style={styles.messages}>
<TouchableWithoutFeedback onPress={Keyboard.dismiss}>
<FlatList
ref={(c) => { this.flatList = c }}
data = {this.props.messages}
keyExtractor={item => item.id}
renderItem = {({item}) =>
<MessageRow img={item.img}
msg = {item.attributes}
my_user_id={this.props.my_user_id}/>
}
inverted
/>
</TouchableWithoutFeedback>
</View>
这是我的错误消息:
我使用“OverloadedStrings”尝试解决此问题,但它似乎无法正常工作。关于开始使用attoparsec的示例或教程的任何指导都将非常有用!
答案 0 :(得分:3)
-XOverloadedStrings
仅将字符串文字的类型从String
更改为更一般的IsString a => a
(可与String
统一,{ {1}},Text
等等。在您的代码中,只有一个文字:文件名ByteString
。
但是文件名总是"small.txt"
!好吧,String
,但这只是FilePath
的同义词。 (即使String
函数也将文件名作为普通旧列表字符串。)因此,重载的字符串文字实际上并没有区别。
但是解析器不处理文件名而是处理内容,因此您需要做的是使用获取此内容的IO例程Data.Text.IO
。
Text