由于String.concat,ocaml中的语法错误

时间:2013-06-11 09:11:50

标签: ocaml

假设我有一个类型为整数的列表[blah; blah; blah; ...],我不知道lis的大小,我想模式匹配而不打印列表的第一个元素。有没有办法在不使用if else情况或语法错误的情况下执行此操作? 因为我要做的就是解析一个看起来像/ path / to / blah / blah /../ file.c的文件 并且只打印路径/到/ blah / blah

例如,可以这样做吗?

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 !!

行有一个语法错误

1 个答案:

答案 0 :(得分:0)

String.concat "/" _::xpath并不意味着什么,因为_是模式但不是值。 _可用于模式匹配的左侧部分,但不能用于右侧部分。

您要做的是String.concat "/" rest

即使_::xpath正确,String.concat "/" _::xpath也会被解释为(String.concat "/" _)::xpath,而您希望将其解释为String.concat "/" (_::xpath)