let get_path_elts path =
let rec walk_dir dirs =
match dirs with
| [] -> []
| dir::tail ->
match (stat dir).st_kind with
| S_REG -> if Stdlib.Filename.extension dir = "ml" || Stdlib.Filename.extension dir = "mli" then dir::(walk_dir tail) else walk_dir tail
| S_DIR -> List.concat [walk_dir (Array.to_list (Sys_unix.readdir dir)); (walk_dir tail)]
| _ -> walk_dir tail
in walk_dir [path]
;;
这是我的代码,我把它粘贴到了utop中。但它报告错误:
Error: This expression has type string but an expression was expected of type
int
此代码最初在vscode中的一个文件中,但没有错误。不知道为什么。
在core
中,=
被定义为int -> int -> bool
。
您需要使用特定于字符串的相等运算符,可以通过本地打开仅用于谓词的String
将其引入作用域,例如:
String.(Stdlib.Filename.extension dir = "ml")