由于String.concat,ocaml中出现语法错误
假设我有一个integer类型的列表[blah;blah;blah;…],我不知道lis的大小,我希望模式匹配,而不是打印列表的第一个元素。有没有办法在不使用if-else或语法错误的情况下实现这一点? 因为我要做的就是解析一个看起来像/path/to/blah/blah//file.c的文件 并且只打印路径/到/等等 例如,可以这样做吗由于String.concat,ocaml中出现语法错误,ocaml,Ocaml,假设我有一个integer类型的列表[blah;blah;blah;…],我不知道lis的大小,我希望模式匹配,而不是打印列表的第一个元素。有没有办法在不使用if-else或语法错误的情况下实现这一点? 因为我要做的就是解析一个看起来像/path/to/blah/blah//file.c的文件 并且只打印路径/到/等等 例如,可以这样做吗 let out x = Printf.printf " %s \n" x let _ = try while true do
let out x = Printf.printf " %s \n" x
let _ = try
while true do
let line = input_line stdin in
...
let rec f (xpath: string list) : ( string list ) =
begin match Str.split (Str.regexp "/") xpath with
| _::rest -> out (String.concat "/" _::xpath);
| _ -> ()
end
但是如果我这样做,我会在String.concat行出现语法错误 String.concat”/“\::xpath
没有任何意义,因为\
是模式而不是值<代码>\uu可用于模式匹配的左侧部分,但不能用于右侧部分
您要做的是String.concat”/“rest
即使
\\xpath
是正确的,String.concat/“\\\xpath
将被解释为(String.concat/):xpath
,而您希望它被解释为String.concat/”(\\code::xpath)对不起,同时我已经用rest替换了xpath,但仍然不起作用!!我并不是故意问两次这个问题的:我们的代码不完整。函数f
不是递归使用的,不会产生值,只会产生副作用。函数f
的范围未关闭,且该函数根本未使用。循环未关闭(无done
关键字)。异常保护未关闭,未命中“catch”分支(没有对应的带有关键字的)。