私の新しいことをOCamlに許してください。しかし、私は2つのリストの交差を返す非常に単純な関数を持っていますが、同時に両方のリストに要素があるときだけです。 3行目では、「この式には 'a'型がありますが、式には 'a list'が期待されていますが、出力するリストではありません。これはなぜリストではありませんか?
let rec intersection (l1 : 'a list) (l2 : 'a list) : 'a list = match l1,l2 with
| [],[] -> [] (* empty lists *)
| [h1::t1], [h2::t2] -> (* non-empty lists *)
if h1 = h2 (* if both elements are the same *)
then h1 :: intersection(t1,t2) (* include in intersection response *)
else intersection(t1, t2) (* else ignore it and check the remaining elements *)
すべてのアームは同じタイプを返す必要があります。 'else'式では、' intersection(t1、t2) 'は' a 'だけを返すことができます。機能の全体を投稿するとより役に立ちます。 – PieOhPah
'intersection(t1、t2)'は、タプル '(t1、t2)'で 'intersection 'を呼び出します。それは '交差点t1 t2'と呼ばれるべきです。 – PieOhPah
タイプエラーで何も変更されていないようです。引き続き この式のタイプは「aですが、式はタイプ です」リスト タイプ変数「リスト内で発生します」 – Swift142