如何转换 FParsec 解析器来解析空格

2023-12-03

我正在实现一个解析器,它使用 FParsec 将注释视为空白。看起来它需要一个简单的解析器转换,但我还不知道如何实现它。

这是我试图进行类型检查的代码 -

let whitespaceTextChars = " \t\r\n"

/// Read whitespace characters.
let whitespaceText = many (anyOf whitespaceTextChars)

/// Read a line comment.
let lineComment = pchar lineCommentChar >>. restOfLine true

/// Skip any white space characters.
let skipWhitespace = skipMany (lineComment <|> whitespaceText)

/// Skip at least one white space character.
let skipWhitespace1 = skipMany1 (lineComment <|> whitespaceText)

错误出现在两个参数的第二个参数上<|>运营商(超过whitespaceText)。错误是 -

Error   1   Type mismatch. Expecting a     Parser<string,'a>     but given a     Parser<char list,'a>     The type 'string' does not match the type 'char list'
Error   2   Type mismatch. Expecting a     Parser<string,'a>     but given a     Parser<char list,'a>     The type 'string' does not match the type 'char list'

看来我需要转换一个Parser<char list, 'a> to a Parser<string, 'a>。或者,因为我只是跳过它们,所以我可以将它们都转换为Parser<unit, 'a>。但是,我不知道如何编写该代码。它是一些简单的 lambda 表达式吗?

Cheers!


let whitespaceText = manyChars (anyOf whitespaceTextChars)

or

let whitespaceText = many (anyOf whitespaceTextChars) |>> fun cs -> System.String (Array.ofList cs)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何转换 FParsec 解析器来解析空格 的相关文章

  • 如何检查函数的类型参数是否静态解析?

    非常简单的例子 let myfun x x在智能感知中 它显示 x a gt a 在 FSI 中 它显示 x a gt a let inline myfun x x在智能感知中 它显示 x a gt a 在 FSI 中 它显示 x a gt
  • 是否可以使用连续传递样式将此递归函数转换为尾递归函数?

    我最近写了一个ETL 效果很好 我想提醒自己如何使用免费的 monad 因此想将我的 ETL 转换为这样的 注意 我的目的不是写一个更好的 ETL 而是让自己重新熟悉免费的 monad 在重新学习自由单子如何工作时 我偏离了这个问题的主题
  • Fable F# > js 编译多个.fsx 文件

    如何编译多个 fsx使用寓言的文件 我 天真地 尝试在 fable config 文件中传递它们的数组 如下所示 outDir app projFile app index fsx app testmod fsx sourceMaps tr
  • 将 OCaml 转换为 F#:将 OCaml open_box 和 close_box 转换为 F#

    我正在将几个基于 OCaml 的模块转换为 F 并遇到了 OCaml 打印格式化函数open box 和 close box http caml inria fr pub docs manual ocaml libref Format ht
  • 使用 F# 3.0 进行动态 SQL 查询?

    我尝试过使用 FLINQ 但它对于 F 3 0 beta 来说已经过时了 有人可以指导我如何在 F 中创建动态 SQL 查询吗 我们最近开发了一个库 FSharpComposableQuery 旨在支持 F 3 0 及以上版本中更灵活的查询
  • 从 F# 中存储为概率序列的离散分布函数中抽取随机数

    存在给定的有限长度 N 的浮点序列 介于 0 和 1 之间 表示整数 0 N 1 上的分布函数 我们试图从这个分布中抽取一个随机数 一种方法是在 0 1 浮点数 中绘制一个均匀随机变量 然后计算该数字的逆累积分布函数 如果分布在数组中 则代
  • F# 有异步验证库吗?

    我在代码中经常使用 asyncResult 但它会在第一个错误时退出 asyncResult let a allGood let b thisReturnsError let c neverExecuted 但有时我想执行所有函数并总结错误
  • 使用 F# 的爱因斯坦之谜解决方案 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我在找爱因斯坦之谜 http en
  • 在 F# 中组合谓词

    F 中是否有逻辑组合谓词的标准方法 例如 假设我有isCar x and isBlue x然后我想要一些能给我的东西 let isBlueCar x isCar x isBlue x 但是使用某种组合而不是调用 可能像 let isBlue
  • 在 F# 中实现返回 Task 的 C# 方法

    我正在 F 中创建一个类型 该类型继承自 C 类 该类公开返回的方法Task
  • 如何更改 Rx Builder 实现来修复堆栈溢出异常?

    我正在尝试提出一个 Rx Builder 以在 F 计算表达式语法中使用反应式扩展 我该如何修复它 以免堆栈崩溃 就像下面的 Seq 例子一样 是否有计划提供 RxBuilder 的实现作为响应式扩展的一部分或作为 NET Framewor
  • Async.TryCancelled 不适用于 Async.RunSynchronously

    我尝试创建一个根据用户交互更新 UI 的代理 如果用户单击按钮 则应刷新 GUI 模型的准备需要很长时间 因此希望如果用户单击其他按钮 则取消准备并开始新的准备 到目前为止我所拥有的 open System Threading type p
  • 如何在 suave webpart 中设置 Json 响应

    我从 Suave 和 F 开始 我正在尝试在我的 web 部件中传递一个 json 序列化对象以在我的响应中获取它 在 php 中我有这个 player1Key hdegftzj25 gameKey aegfhzkfszl
  • 如何判断 F# 函数是否是纯函数?

    假设我有这两个 F 函数 let sq x x x let tm DateTime Now 显然 sq 是纯的 因为它对于给定的输入总是返回相同的值 而 tm 是不纯的 因为每次调用它时都会返回不同的值 一般来说 有没有一种方法可以确定 F
  • 如何解决“程序主模块为空:运行时不会发生任何事情”

    我在 F 解决方案中有两个项目 1 主要项目有 EntryPoint http msdn microsoft com en us library dd402151 aspx并设置为启动项目 2 support 第二个项目 拥有一组支持模块
  • 如何在 F# 中将对象转换为泛型类型列表

    在下面的代码片段中 我的目的是将 System Object 可能是 FSharpList 转换为它所持有的任何泛型类型的列表 match o with list lt gt gt addChildList o gt list lt gt
  • 通用高阶函数

    当我将泛型函数作为本地值传递时 但在作为参数传递时却不能使用具有不同类型参数的泛型函数时 是否有原因 例如 let f id let g x y f x f y g 1 2 工作正常 但如果我尝试将函数作为参数传递 let g f x y
  • 如何在 F# 中捕获任何异常(System.Exception)而不发出警告?

    我试图捕获异常 但编译器给出警告 此类型测试或向下转型将始终保持 let testFail try printfn Ready for failing failwith Fails with System ArgumentException
  • 如何在MVVM中实现appSettings

    我正在尝试摆脱我使用的警告appSettings在 WPF 项目中 应用程序配置
  • F# 获取随机数列表

    我正在尝试用随机数填充列表 但很难获得随机数部分 我现在打印出一个随机数 10 次 我想要的是打印出 10 个不同的随机数 let a new System Random Next 1 1000 let listOfSquares for

随机推荐

  • 谷歌地图API地理定位+雷达地点搜索

    我正在尝试使用谷歌地图 API 中的地理位置和地点来显示地图 在我的位置 以及我周围最近的地点 这两个示例单独工作 但不能一起工作 谁能告诉我为什么会有问题 我是否用另一个地图覆盖了地图或做其他错误的事情
  • 预处理使用 keras 函数 ImageDataGenerator() 生成的图像来训练 resnet50 模型

    我正在尝试训练 resnet50 模型来解决图像分类问题 在我拥有的图像数据集上训练模型之前 我已经加载了 imagenet 预训练权重 我正在使用 keras 函数 flow from directory 从目录加载图像 train da
  • 无法访问 webrtc 上的后置摄像头 [chrome:54]

    我正在使用 webrtc 和 Threejs 尝试 webAR 演示 同时通过我的 Android 手机 chrome 54 访问相机 前置摄像头默认打开 我检查并尝试通过参考有关堆栈溢出的所有问题来解决该问题 甚至尝试更改数组值但没有成功
  • C++:使用 longjmp 和 setjmp 安全吗?

    在 linux gcc 上的 C 中使用 longjmp 和 setjmp 是否安全 异常处理 我没有使用longjmp setjmp实现异常处理 我想知道longjmp setjmp会对标准异常处理产生什么副作用 this pointer
  • 如何使用 matplotlib 绘制一维高斯混合模型的 pdf

    我想绘制高斯混合模型 下面的代码允许我绘制两个单独的高斯曲线 但是在它们相交的地方 线条非常尖锐并且不够平滑 有没有办法绘制一维 GMM 的 pdf def plot data mu 6 5 var 2 3 sigma np sqrt va
  • Animationend 事件未在 :after 元素上触发

    我在 after 元素上设置了一个动画 并在animationend 事件上设置了一个事件处理程序 但是 animationend 事件在 IE10 IE11 中永远不会触发 document ready function var test
  • PhantomJS 节点 - page.open - 无法跟踪多个页面

    我在用着幻影节点将节点与 PhantomJS 接口 我正在尝试并行打开页面 但问题是page open回调函数不会传回对页面的引用 因此我无法知道哪个页面已完成 相关代码 self queue j page open call self q
  • 计算记录在数据库表中出现的最大次数

    我无法找到正确的 mysql 函数 但我试图找到单个记录相对于所有其他记录出现在数据库中的最大次数 例如 ID 1 2 2 2 3 3 我想要实现的查询的理想返回是3 1的计数是1 2的计数是3 3的计数是2 所以返回任何id的最大计数 不
  • PHP 中的数据网格[关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我需要使用 php 作为后端编程语言在 Web 应用程序中创建一个数据网格 该数据网格将从 MySQL 数据库对象 视图 存储过程 填充 最终用户应该能够编辑此数据网格中的数据
  • Java super() 继承

    问题的简短摘要 我有一个由子类扩展的父类 public class Parent public Parent constructor logic 这个子类使用 super 调用父类的构造函数 public class Child exten
  • Flutter 是否能够在运行时动态加载和构建 widget?

    有没有什么可以让我在某个服务器上存储多个 dart 文件并在运行时检索这些文件中的任何一个 以便 Flutter 能够从它收到的文件构建特定的小部件 您无法动态加载 dart 文件或创建新类 不 另一方面 小部件树是在运行时创建的 并且小部
  • 停止 Qt 线程:调用 exit() 或 quit() 不会停止线程执行

    在 main 中创建了一个 QThread 即主线程 将工作类移至新线程 线程执行工作类的 StartThread 方法 工人线程 header file class Worker public QObject Q OBJECT publi
  • 用于读取输入文本文件并为输入文本文件的每一行创建文本文件的批处理脚本[关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 询问代码的问题必须对所解决的问题表现出最低限度的了解 包括尝试的解决方案 为什么它们不起作用以及预期结果 也可以看看 Stack Overflow 问题清单 这个问题似乎不是关于主要
  • UIDocumentInteractionController 删除操作菜单

    我一直在使用 Apple 示例代码来从此处查看文档 https developer apple com library ios samplecode DocInteraction Listings ReadMe txt html 我已经删除
  • 如何设置 PHP 的环境变量?

    我正在使用WAMP 我想从命令提示符使用 php PATH 环境变量中的条目是什么 您需要将 PHP 目录添加到您的路径中 在命令行上 例如在批处理文件中 它看起来像这样 SET PATH PATH C your wamp path php
  • 按 Java 8 中的可比 Bean 属性排序

    是否有比此模式更短的方法来使用 Java 8 流按可比属性进行排序 collection stream sorted a b gt a getProp compareTo b getProp 是的 你可以使用方法参考为了这 collecti
  • 方括号前面的逗号 - MDN 文档

    MDN是我的主要 Javascript 资源 我经常看到这样的符号 currentValue index array as in let new array arr map function callback currentValue in
  • Jquery 基于选择文本的条件验证

    我只想在 select1 字段中选定的文本为 其他 时才需要 其他 字段 我正在尝试的规则是 other required function element return select1 option selected text Other
  • 单个按钮 tkinter 的多个操作

    我一直在使用 matplotlib 和 tkinter 为基于 GUI 的绘图仪编写一个程序 我为一些选项添加了一个顶层窗口 我想执行一个函数并在单击按钮后退出顶层窗口 那可能吗 我面临的问题是我使用了必须从主窗口调用的顶级窗口 所以我定义
  • 如何转换 FParsec 解析器来解析空格

    我正在实现一个解析器 它使用 FParsec 将注释视为空白 看起来它需要一个简单的解析器转换 但我还不知道如何实现它 这是我试图进行类型检查的代码 let whitespaceTextChars t r n Read whitespace