首页 > 解决方案 > 用户定义类型 Ocaml

问题描述

我有以下用户定义的类型:

poly = Poly of (float*int) list

我正在尝试应用模式匹配,但是我正在努力解决我Poly不是空列表的情况,我最后一次尝试是

Poly [(x,y)::xs]

但我知道这是完全错误的,我只是在努力制定它。

标签: pattern-matchingocaml

解决方案


有两种方法可以编写列表(和列表模式)。如果您使用::运算符,您可以在模式的尾部有一个任意列表。如果您使用该[ ... ]符号,您的模式将只匹配特定长度的列表。

您正在混合这两种模式类型,这不是您想要的。(您当然可以在匹配适当的类型时混合它们。)

您的模式应该(很可能)如下所示Poly ((x, y) :: xs):注意模式主体周围的括号。运算符的::优先级低于 的应用Poly。所以你需要括号。


推荐阅读