List Ocaml,将所有指定的元素替换为列表中的给定元素
我正在编写一个ocaml项目,其中我有一个函数,可以用List Ocaml,将所有指定的元素替换为列表中的给定元素,list,ocaml,List,Ocaml,我正在编写一个ocaml项目,其中我有一个函数,可以用'E'替换字符列表中的所有'。以下是我的建议代码: let rec string_lst_change_E lst = match lst with [] -> let a ='E'; a::[] |(h::t) if (h = '') -> 'E'::(string_lst_change_E t) |(h::t) -> h::(string_lst_ch
'E'
替换字符列表中的所有'
。以下是我的建议代码:
let rec string_lst_change_E lst =
match lst with
[] -> let a ='E'; a::[]
|(h::t) if (h = '') -> 'E'::(string_lst_change_E t)
|(h::t) -> h::(string_lst_change_E t)
;;
它说我有一个语法错误。。。但我自己也搞不清楚。
我试着这样修改它:
let rec string_lst_change_E lst =
match lst with
[] -> 'E'::[]
|(h::t) ->if (h = '') then 'E'::(string_lst_change_E t) else h::(string_lst_change_E t)
;;
但是仍然有语法错误…(在第|(h::t)->…行上…char 18-21)
请帮我看一下。谢谢大家! 这就是第一个错误所在:
[]->让a='E';a::[]
如果您希望在声明后使用a,则应改为在a::[]中写入[]->让a='E'。显然,[]->['E']
更简单
第二种是在模式匹配中使用if
。当
时应使用:当h=''->'E'::(string_lst_change_E t)
但“到底”是什么?空字符?你怎么把这个串起来?键入''
本身就是一个语法错误。在顶层试一试!为了使您的代码能够编译,我将'
替换为'
let rec string_lst_change_E lst =
match lst with
| [] -> let a ='E' in a::[]
| (h::t) when h = ' ' -> 'E'::(string_lst_change_E t)
| (h::t) -> h::(string_lst_change_E t)
请注意,您只需在此处使用函数:
let rec string_lst_change_E = function
| [] -> let a ='E' in a::[]
| (h::t) when h = ' ' -> 'E'::(string_lst_change_E t)
| (h::t) -> h::(string_lst_change_E t)
@NiklasB.刚刚更新了我的问题,在线上是|(h::t)->。。。。char 18-21
“
不是有效的文本。你想要实现什么?你是说空格字符''
?