OCaml用户定义类型模式匹配

OCaml用户定义类型模式匹配,ocaml,user-defined-functions,Ocaml,User Defined Functions,如果我创建自己的类型,例如: type mynew = | Base | Co of mynew | Io of mynew 如何使用模式匹配访问/解构此类型?因此,如果我有IO(CO(IO(BASE)),我可以将其作为值传递给函数,并访问第一部分(IO)和尾部(CO(IO(BASE))?您只需应用模式匹配: match yourParam with Base -> (**) | Co(t) -> (*Something with t*) | I

如果我创建自己的类型,例如:

type mynew =
 | Base
 | Co of mynew
 | Io of mynew

如何使用模式匹配访问/解构此类型?因此,如果我有IO(CO(IO(BASE)),我可以将其作为值传递给函数,并访问第一部分(IO)和尾部(CO(IO(BASE))?

您只需应用模式匹配:

match yourParam with 
    Base -> (**) 
    | Co(t) -> (*Something with t*) 
    | Io(t) -> (*Something with t*)

谢谢我找不到关于它的好文档,这很有帮助。只要谷歌“递归类型的模式匹配”,你就会发现足够的资源Real World OCaml有一个很好的例子。