Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List Ocaml,将所有指定的元素替换为列表中的给定元素_List_Ocaml - Fatal编程技术网

List 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

我正在编写一个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_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
不是有效的文本。你想要实现什么?你是说空格字符
''