2017-05-02 8 views
0

のn番目の要素を印刷:OCamlの - トラブル私は、文字列が与えられたときのリストを返す関数持たリスト

let rec get_nth = function 
    | h::_, 0 -> h 
    | h::t, n -> get_nth(t, n - 1) 
;; 
:私も、リストのn番目の要素を返すべき機能を持っている

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

私は、リストの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

'List.nth'はstdlibに存在し、btwです。 – gsg

答えて

1

get_nthは1組ではなく、二つの別々の引数を期待し、それはあなたのケースで

get_nth ([1;2;3;4], 2) 

または

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

のように呼び出されなければなりません。

+1

私は、このような慣習的でない関数は慣用的ではないということを付け加えたいと思います.-あなたが 'let get_nth ln = f(l、n)'をf(l、n) 'に置き換えて定義することもできます。 –

+1

@ÉtienneMillonまたは' let rec get_nth lst n = lst、nと... 'をマッチさせますが、 'List.nth'を使用します:) – Stas

関連する問題