OCaml - 无法打印列表的第n个元素

时间:2017-05-02 12:07:24

标签: list functional-programming ocaml

我有一个函数,在给定字符串时返回一个列表:

let input_string_to_list input =
  Str.split (Str.regexp "\n") input

我还有一个应该返回列表的第n个元素的函数:

let rec get_nth = function 
  | h::_, 0 -> h 
  | h::t, n -> get_nth(t, n - 1) 
;;

然后我尝试打印列表的第n个元素(应该是一个字符串):

print_string (get_nth (input_to_set_strings input) n)

但是我在编译时遇到了这个错误:

Error: This expression has type string list but an expression was expected of type ('a -> 'b) list * int

我不知道我在哪里滑了,我对功能编程很新,感谢任何帮助,谢谢。

1 个答案:

答案 0 :(得分:1)

get_nth期望一个元组而不是两个单独的参数,因此应该像

一样调用它
get_nth ([1;2;3;4], 2)

print_string (get_nth ((input_to_set_strings input), n))

在你的情况下。