Hallo!
Zuerst eine Bemerkung: Ich versuche nicht, eine besonders sinnvolle oder performante Implementation des Quicksort zu finden, sondern möchte etwas ähnliches wie bei dem
Haskell-Beispiel haben.
Nun zum Problem. Als normale Methode klappt das:
Delphi-Prism-Quelltext
1: 2: 3: 4: 5:
| class method ConsoleApp.Sort(xs : List<Integer>) : List<Integer>; begin if xs.Count = 0 then exit new List<Integer>; result := Sort(xs.Where(y -> y < xs[0]).ToList).Concat([xs[0]]).Concat(Sort(xs.Where(y -> y > xs[0]).ToList)).ToList; end; |
Möchte ich das auch noch als Lambda-Ausdruck machen, geht's nicht mehr:
Delphi-Prism-Quelltext
1: 2:
| var sort : Func<List<Int32>, List<Int32>> := xs -> iif(xs.Count = 0, new List<Int32>, sort(xs.Where(y -> y < xs[0]).ToList).Concat([xs[0]]).Concat(sort(xs.Where(y -> y > xs[0]).ToList)).ToList); |
Da erhalte ich dann eine NRE, die ich mir nicht erklären kann.
Die bezieht sich dann auf das
y < xs[0].
Wo mache ich da den Fehler?
Grüße
Christian
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".