このシンプルな機能
let s =
function
| [] -> [[]]
| list -> []::list
タイプ ('a List List -> 'a List List) があります。したがって、'a はジェネリックであるため、引数として任意の深さのリストを受け入れます。私の問題は、入力リストの深さを常に指定する必要があることです。そうしないと、F# Interactive が文句を言います。例えば
s []
動作しません
s ([]: int List List)
意思。同様に、
s [[[]]]
動作しませんが
s ([[[]]]:int List List List)
します。したがって、これは単なる例ですが、一般的にそのような明示的な型付けを回避する方法はありますか?
ありがとう