2014-08-29 3 views
1

Я получил следующие результаты при наборе этой функции в OCaml toplevel. Вход кажется мне идентичным одновременно, другой - пробел, окружающий оператор ::. Может ли кто-нибудь объяснить разницу между 'a option list и 'a option здесь?Разница OCaml между 'списком опций и' a

# let rec at i = function 
    | [] -> None 
    | h::t -> if i = 1 then Some h else at (i-1) t;; 
    val at : int -> 'a option list -> 'a option = <fun> 
# let rec at i = function 
    | [] -> None 
    | h :: t -> if i = 1 then Some h else at (i-1) t;; 
    val at : int -> 'a list -> 'a option = <fun> 

ответ

3

Вот что я вижу:

$ ocaml 
     OCaml version 4.01.0 

# let rec at i = function 
    | [] -> None 
    | h::t -> if i = 1 then Some h else at (i-1) t;; 
val at : int -> 'a list -> 'a option = <fun> 
# let rec at i = function 
    | [] -> None 
    | h :: t -> if i = 1 then Some h else at (i-1) t;; 
val at : int -> 'a list -> 'a option = <fun> 

На мой взгляд, эксперимент был испорчен каким-либо образом. Расстояние между :: не имеет значения.

+0

Вы должны быть правы. Я не мог воссоздать проблему, поэтому она, должно быть, была связана с некоторыми предыдущими связями, о которых я забыл. Благодаря! –

Смежные вопросы