Haskell 分析长度至少为一个字符的字符串
我正在尝试用Haskell编写解析器。在本文中,我需要一个解析长度至少为1的字符串的函数。我在下面声明了类型:Haskell 分析长度至少为一个字符的字符串,haskell,Haskell,我正在尝试用Haskell编写解析器。在本文中,我需要一个解析长度至少为1的字符串的函数。我在下面声明了类型: type Pname = String 但是我的功能不起作用。下面是我的代码,其中sc是我的空格和注释的空间使用者(我一直在学习教程,以获取有关此解析器的帮助): pname::解析器pname pname=(some['a'..'z'])您可能打算使用(或解析器库中的类似函数),如中所示 pname=some(其中一个['a'..'z'])我需要它来接受一个或多个字符,因此我认为其
type Pname = String
但是我的功能不起作用。下面是我的代码,其中sc
是我的空格和注释的空间使用者(我一直在学习教程,以获取有关此解析器的帮助):
pname::解析器pname
pname=(some['a'..'z'])您可能打算使用(或解析器库中的类似函数),如中所示
pname=some(其中一个['a'..'z'])我需要它来接受一个或多个字符,因此我认为其中一个不合适?@datgeywelbzoneOf['a'..'z']
只接受一个字符;但是some(其中一个['a'..'z'])
接受一个或多个(请参阅)。
pname :: Parser Pname
pname = (some ['a' .. 'z']) <* sc
Couldn't match type ‘[]’
with ‘ParsecT Dec String Data.Functor.Identity.Identity’
Expected type: ParsecT
Dec String Data.Functor.Identity.Identity Char
Actual type: [Char]
In the first argument of ‘some’, namely ‘['a' .. 'z']’
In the first argument of ‘(<*)’, namely ‘(some ['a' .. 'z'])’
In the expression: (some ['a' .. 'z']) <* sc
pname = some (oneOf ['a' .. 'z']) <* sc