次のようなコードがあります。
Fi_F = fun (F, I, Xs) ->
fun ( X ) ->
F( x_to_list(X, Xs, I) )
end
end,
リストの関数を1つの数値の関数に変える必要があります。たとえば、Xs=[1,2,3]およびI=2の場合、これにより関数が付与されると思います。
fun ( X ) -> F([ 1, X, 3]) end.
しかし、どういうわけか、F、I、およびXはシャドウされており、閉じられていないため、x_to_listで空のリストで失敗します。
私はまだErlangに不慣れで、単なる構文の問題よりも概念的なものが欠けていると思います。
UPD:バグが見つかりました。私はx_to_list/3を次のように書きました:
x_to_list( X, L, I ) ->
lists:sublist(L, I) ++ [ X ] ++ lists:nthtail(I+1, L).
したがって、リスト要素は1ではなく0からカウントされます。I= 3で呼び出すと、失敗します。ですから、これは閉鎖についてではありません。
まだシャドウイングの警告がありますが、それは完全に別の問題です。