pattern-matching - 用户定义类型 Ocaml
问题描述
我有以下用户定义的类型:
poly = Poly of (float*int) list
我正在尝试应用模式匹配,但是我正在努力解决我Poly
不是空列表的情况,我最后一次尝试是
Poly [(x,y)::xs]
但我知道这是完全错误的,我只是在努力制定它。
解决方案
有两种方法可以编写列表(和列表模式)。如果您使用::
运算符,您可以在模式的尾部有一个任意列表。如果您使用该[ ... ]
符号,您的模式将只匹配特定长度的列表。
您正在混合这两种模式类型,这不是您想要的。(您当然可以在匹配适当的类型时混合它们。)
您的模式应该(很可能)如下所示Poly ((x, y) :: xs)
:注意模式主体周围的括号。运算符的::
优先级低于 的应用Poly
。所以你需要括号。
推荐阅读
- javascript - 如何在树 js/ts 中查找节点的搜索路径
- android - 申请被拒绝,因为某些权限问题
- c++ - 在创建 OpenCL 上下文之前设置线程关联会导致 Segfault
- azure - Azure 技能日历 BoT 移交引发 websocket 异常
- mysql - MySQL:从字符串(或 varchar 字段)中提取第一个、第二个和第三个单词
- php - 尝试从命名空间“Symfony\WebpackEncoreBundle”加载类“WebpackEncoreBundle”。您是否忘记了另一个名称空间的“使用”语句?
- reactjs - 如何使用 Context API 更新组件提供者的状态
- powerbi - 隐藏另一个切片器的值的切片器
- c# - 如何使用 API 传输密码
- mongodb - 如何更新现有文档中的新数组