字符串的OCaml函数参数模式匹配 [英] OCaml function parameter pattern matching for strings

查看:23
本文介绍了字符串的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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆