涉及 Haskell 式的 Rust 实验做符号、状态、失败和 Nom 解析器!

时间:2024-07-18 13:09:14
【文件属性】:

文件名称:涉及 Haskell 式的 Rust 实验做符号、状态、失败和 Nom 解析器!

文件大小:11KB

文件格式:ZIP

更新时间:2024-07-18 13:09:14

mdoexperiments

介绍作为 Haskell 开发人员最近深入研究 Rust 的很长一段时间,我真正错过的是 monads 和do符号。monadicdo notation 特别好的一件事是编写解析器。本文将探讨启用 Haskell 风格的do表示法以在 Rust 中编写解析器的可能性。可能在 Rust 中最流行的用于解析的 crate 称为Nom ,它的解析器组合器函数需要手动线程化解析器输入。公平地说,我应该提到 Nom 还提供基于宏的解析器组合器和一个do_parse!与函数中的do符号非常相似的宏。还有几个 crate 试图允许使用宏do符号表示。我选择了一种叫做do-notation 的方法,它似乎采用了一种通用的方法,而且最近也进行了更新。注意:do-notation使用m!而不是do!因为do是 Rust 中的保留字。一个带有Option的简单示例(在 Haskell 世界中称为“Maybe ”)将是这样的:// Type annotation included just for clarity.let result:Option=m! { x<-Some (1 );let


【文件预览】:
mdoexperiments-main
----.gitignore(29B)
----src()
--------stateresult.rs(2KB)
--------state.rs(1KB)
--------main.rs(3KB)
--------nomparser.rs(2KB)
--------stateeither.rs(2KB)
--------lib.rs(221B)
----Cargo.toml(167B)
----LICENSE.txt(1KB)
----README.md(10KB)
----rustfmt.toml(15B)

网友评论