字符串的OCaml函数参数模式匹配 [英] OCaml function parameter pattern matching for strings
本文介绍了字符串的OCaml函数参数模式匹配的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我试图传入一个字符串以获得反转的字符串。为什么我不能这样做:
let rec reverse x =
match x with
| "" -> ""
| e ^ s -> (reverse s) ^ e;;
编译器说这是一个语法错误。我不能使用^
来分解参数吗?
推荐答案
原因是字符串没有以与列表相同的方式表示为数据类型。因此,虽然cons(::)是一个构造函数,但^是而不是。相反,字符串表示为没有递归定义的较低级别类型(如列表所示)。有一种方法可以将字符串作为字符列表进行匹配,方法是使用来自SML(可以用OCaml编写)的名为‘EXPLODE’和‘INPRODE’的函数,这两个函数分别将字符串带到字符列表中,反之亦然。Here's an example implementation of them.
这篇关于字符串的OCaml函数参数模式匹配的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文