如何解决OCAML:将列表中的每个字符串转换为字符串列表
我有两个功能,一个是
let make_row delim str = List.map String.trim (Str.split (Str.regexp delim) str)
另一个是
let rec table_of_stringlist delim rlist = match rlist with
| h::[]-> make_row delim h
| h::t -> table_of_stringlist delim (make_row delim h)::t)
但是第二个给我带来麻烦。我试图使它本质上是table_of_stringlist d [r1; r2; ...; rN]应该评估为[(make_row d r1); (make_row d r2); ...; (make_row d rN)]。值d是定界符,因此例如 table_of_stringlist“ |” [“ a | b | c”; “ d | e”] 应该评估为 [[“ a”;“ b”;“ c”]; [“ d”;“ e”]]。我对如何在第二个函数中编写匹配用例感到困惑。任何帮助都会很棒。
解决方法
构建时,您将希望沿递归函数传递新列表(表格),一旦到达rlist
的末尾,就返回该新列表
let rec table_of_stringlist delim rlist table = match rlist with
| [] -> table
| h::t->
let new_row = make_row delim h in
table_of_stringlist delim t (table @ [new_row])
第一次调用时,将空白列表作为table
传递。
注意:我并未实际测试上面的摘录,因此它在语法上可能不正确,但是应该接近您的需求。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。