Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.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
Parsing 用Parsec解析字母或数字_Parsing_Haskell - Fatal编程技术网

Parsing 用Parsec解析字母或数字

Parsing 用Parsec解析字母或数字,parsing,haskell,Parsing,Haskell,我正在尝试为字符串编写解析器,例如x、a(即单个字母)、657和0(即整数正数)。 这是我写的代码 import Text.Parsec data Expression = String String | Number Int value = letter <|> many1 digit 如何在解析器中转换Char->String 值的类型注释应该是什么 字母仅解析单个字母并返回一个字符。您想解析一个字符串,即[Char](这是同一回事),所以我想您想解析多个字母 但是,如果

我正在尝试为字符串编写解析器,例如
x
a
(即单个字母)、
657
0
(即整数正数)。 这是我写的代码

import Text.Parsec

data Expression = String String | Number Int

value = letter <|> many1 digit
  • 如何在解析器中转换
    Char->String
  • 值的类型注释应该是什么

字母
仅解析单个字母并返回一个
字符
。您想解析一个
字符串,即
[Char]
(这是同一回事),所以我想您想解析
多个字母

但是,如果您只想将单个字母解析为
字符串
,您可以利用
Parsec\uu
有一个
Functor
实例的优势,以便映射其结果并将其打包到列表中:

value :: Parsec s u String 
value = fmap (:[]) letter <|> many1 digit

letter
仅解析单个字母并返回
Char
。您想解析一个
字符串,即
[Char]
(这是同一回事),所以我想您想解析
多个字母

但是,如果您只想将单个字母解析为
字符串
,您可以利用
Parsec\uu
有一个
Functor
实例的优势,以便映射其结果并将其打包到列表中:

value :: Parsec s u String 
value = fmap (:[]) letter <|> many1 digit

这个
表达式是干什么用的?我相信解析的目标是对数据进行语义表示,所以我们需要一个数据表type@Blincer(偏离主题,中间回答,你的问题被删除了。FWW)。太长,读不下去了画布是有限的,它会反别名,但你可以在一个更大的尺寸重新绘制的东西。(可能对原始像素/画布图像数据也可以这样做,但p5.图形(例如椭圆像素等)有一定的灵活性)这个
表达式是干什么用的?我相信解析的目标是对数据进行语义表示,因此我们需要一个数据表type@Blincer TLDR,画布是有限的,它将是反锯齿,但是你可以在更大的尺寸上重新绘制东西。(大概可以用原始像素/画布IMADEDATA做同样的事情,但是你可以用P5。图形(例如椭圆像素等)得到一点灵活性。我正在尝试解析单个字母,发现这种情况下
(String.pure)
会更干净。而且,解析器也很便宜:)
value=String number,其中String=(String.pure)字母;number=read many1位
。我不喜欢这里的
pure
,因为它在我的眼里与解析器的应用实例混在一起。我正在尝试解析单个字母。这种情况下
(String.pure)
会更干净。另外,解析器也很便宜:)
value=String number,其中String=(String.pure)字母;number=read many1位
。我不喜欢这里的
,因为它在我眼里与解析器的应用实例混在一起
value :: Parsec s u Expression 
value = fmap (String . (:[])) letter
    <|> fmap (Number . read) (many1 digit)