0

Я пытался шаблон для случая, когда пользователь вводит в недопустимого каталоге:Ошибка при попытке сопоставить шаблон для Unix_error (Ocaml)?

# let dir = Unix.opendir "adfalf";; 
Exception: Unix.Unix_error (Unix.ENOENT, "opendir", "adfalf"). 

Моя функция заключается в следующем:

let files_of_dir d = 
    try 
     let dir = Unix.opendir d in 
     ... 
    with 
     Unix_error (uerr, ucommand, dir) -> raise Not_found 

Только я получаю ошибку компиляции:

Error: This variant pattern is expected to have type exn 
     The constructor Unix_error does not belong to type exn 

Я не понимаю, что я делаю неправильно, с учетом соответствия шаблону. Если бы кто-нибудь мог мне помочь в этом, мы будем очень благодарны!


Некоторые другие Примечания:

Я компиляции моего кода с помощью следующей команды на терминале:

ocamlbuild filename.byte 

ответ

1

Вы должны сказать Unix.Unix_error, а не просто Unix_error. Обратите внимание, что это то, что появляется в вашем тестовом сеансе.

+0

спасибо !!! это избавило меня от головной боли – 14wml