gpt4 book ai didi

parsing - Programming in Haskell 中的函数式解析器示例

转载 作者:行者123 更新时间:2023-12-01 23:33:51 25 4
gpt4 key购买 nike

在第 76 页,我们定义了一个函数 item作为解析器——一个接受 String 的函数并返回 [(Char, String)][]如果失败了。

在第 78 页,我们定义了一个函数 sat需要一个谓词 p并围绕它“包装”一个解析器结构

p :: (Char -> Bool) -> Parser Char
sat p = do x <- item
if p x then return x else failure

我不明白的是<-的神奇之处?如果 item 的结果不为空,则此运算符应打开列表并从元组中获取第一项,否则它应生成不会阻塞谓词的内容。我错过了什么?

最佳答案

do x <- item
if p x then return x else failure

这是语法糖

item >>= (\x -> if p x then return x else failure)

>>= 是单子(monad)绑定(bind)运算符。

您缺少的是:>=Parser 类型的定义是什么? (书中哪里定义了ParserMonad实例?会在instance Monad Parser where开始。)

关于parsing - Programming in Haskell 中的函数式解析器示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12652897/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com