Haskell 读取器和解析器之间的区别是什么?
我想知道,读取器和解析器之间的区别是什么 例如,我有以下文本:Haskell 读取器和解析器之间的区别是什么?,haskell,Haskell,我想知道,读取器和解析器之间的区别是什么 例如,我有以下文本: pcp-action: MESSAGE pcp-body-type: text field1:value1 field2:value2 this is the body! 两个空间分开头部和身体。最后,我希望有一个head和body数据类型来保存它们 问题是,我应该使用解析器还是阅读器?您可能应该寻找某种解析器。这是对这样的文本进行某种理解的程序的现代名称 有时使用单词阅读器是因为: 解析器用于引用其他内容 它只是标记化(但
pcp-action: MESSAGE
pcp-body-type: text
field1:value1
field2:value2
this is the body!
两个空间分开头部和身体。最后,我希望有一个head和body数据类型来保存它们
问题是,我应该使用解析器还是阅读器?您可能应该寻找某种解析器。这是对这样的文本进行某种理解的程序的现代名称 有时使用单词阅读器是因为:
- 解析器用于引用其他内容
- 它只是标记化(但这样的程序通常称为lexer)
- 在lisp中,将字符串解析为对象的函数称为reader
- 在Haskell中,实现了typeclass
,以指定如何从字符串解析类型Read
- 这些词具有相似的含义,读者是一个更简单、更常见的自然语言词,可用于此任务
Reader
和什么时候使用Parser
。你需要编写一个解析器。Parser是一个英文单词,表示进行解析的东西,您需要一个进行解析的东西。Reader是一个不同的英语单词,有时用来描述进行语法分析的事物。如果你在Haskell中思考具体的事情,你需要更加具体。什么是Reader?在什么情况下我应该使用Reader?我也可以使用Reader来解析某些内容,但这是违反规则的。Reader
只是为一组函数调用提供了一个通用的只读环境。它与解析几乎没有关系。