Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 读取器和解析器之间的区别是什么?_Haskell - Fatal编程技术网

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时,你指的是monad Reader,它与文本阅读无关。@Willenss我改变了它。读者并不意味着阅读文本?在我的情况下,哪一个是正确的选择?“有下面的文本”你在哪里有它?@Wilness文本如下。你能看见吗?或者我做错了什么。它在外部文件中吗?在源代码文件中?在哪里?我不知道什么时候使用
Reader
和什么时候使用
Parser
。你需要编写一个解析器。Parser是一个英文单词,表示进行解析的东西,您需要一个进行解析的东西。Reader是一个不同的英语单词,有时用来描述进行语法分析的事物。如果你在Haskell中思考具体的事情,你需要更加具体。什么是Reader?在什么情况下我应该使用Reader?我也可以使用Reader来解析某些内容,但这是违反规则的。
Reader
只是为一组函数调用提供了一个通用的只读环境。它与解析几乎没有关系。