私はF#を初めて使用しており、powersetを計算する関数を作成しようとしています。無効なILコード - F#
下記のMacでMonoからエラーが発生します。
たとえば、関数を開始するためにcalcPowerSet([1; 2; 3]、[])を渡します。どのように問題を解決するための任意のアイデア?
System.InvalidProgramException: Invalid IL code in FSI_0010:calcPowerSet (Microsoft.FSharp.Collections.List`1,Microsoft.FSharp.Collections.List`1): IL_005d: stind.r4 at FSI_0010.calcPowerSet[Int32] (Microsoft.FSharp.Collections.List`1 _arg1_0, Microsoft.FSharp.Collections.List`1 _arg1_1) [0x00000] at .$FSI_0011._main() [0x00000] at (wrapper managed-to-native) System.Reflection.MonoMethod:InternalInvoke (object,object[],System.Exception&) at System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00000] stopped due to error
コード:
let rec calcPowerSet = function | ([], []) -> [[]] | ((head::tail), (cHead::cTail)) -> calcPowerSet (tail, (cHead::cTail)) @ calcPowerSet (tail, (head::cHead::cTail)) | ((head::tail), []) -> calcPowerSet (tail, []) @ calcPowerSet (tail, [head]) | ([], collect) -> [collect];;
どのバージョンのF#? (例:1.9.6.2) – Brian
FYI - Windowsでは1.9.6.2で、機能は期待通りに機能します。興味深い。 – Brian
私はF#1.9.4.19を使用しています 私はWindowsマシンで試してみます。これはモノラル実装の問題でしょうか? – Ipster