Ich bin neu in F # und versuche eine Funktion zu schreiben, die ein Powerset berechnet.Ungültiger IL-Code - F #
Ich erhalte einen Fehler von Mono (läuft dies auf einem Mac), der unten ist.
Zum Beispiel würde ich calcPowerSet ([1; 2; 3], []) übergeben, um die Funktion zu starten. Irgendwelche Ideen zur Lösung des Problems?
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
Code:
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];;
Welche Version von F #? (z. B. 1.9.6.2) – Brian
FYI - Unter 1.9.6.2 unter Windows funktioniert Ihre Funktion wie erwartet. – Brian
Interessant. Ich benutze F # 1.9.4.19 Ich werde auf einer Windows-Maschine versuchen. Könnte das ein Mono-Implementierungsproblem sein? – Ipster