次のコードは、'a list list -> 'a list
リストのリストを指定すると、リストから取得した最初の各要素で構成されるリストを返す関数を作成しようとする試みです。
#let first_element_lists lis =
let f x y =
match y with
[] -> x
|[]::[] -> x
|[z]::[zs] -> match [z] with
[] -> x
| v::vs -> v::x
in
foldr f [] lis;;
Toplevel input:
> foldr f [] lis;;
> ^
This expression has type 'a list -> 'a list list -> 'a list,
but is used with type 'a list -> 'a list list -> 'a list list.
エラーが実際にどこにあるのかを把握するのに本当に苦労しています。