Ich versuche, jede Position (die eine Liste ist) in einer Positionsliste zu sortieren. Derzeit bin ich doint wie diese:
type Position = Position of list<int * Piece>
und meine Funktion:
let SortPositionList positionList : Position list =
let rec loop list =
match (list: Position list) with
| [] -> []
| hd::tl -> [List.sortBy(fun (x:(int*Piece)) -> fst x)(GetInternStruct(hd))::loop tl]
loop positionList
Meiner Meinung nach könnte dies durch rekursive Sortierung der tatsächlichen Kopf der Liste und dann concat es mit dem Rest der Liste getan werden, aber es funktioniert nicht. Die Fehler in dieser Funktion sind:
Typ nicht übereinstimmend. Erwartet eine (int * Stück)-Liste Liste, aber gegeben eine (int * Stück)-Liste Liste Liste Der Typ 'int * Stück' stimmt nicht mit dem Typ '(int * Stück)-Liste' überein, in der unterstrichenen loop tl
Typ nicht übereinstimmend. Erwartet eine Positionsliste, aber gegeben eine (int * Stück) Liste Liste Liste Der Typ 'Position' stimmt nicht mit dem Typ '(int * Stück) Liste Liste' überein, im unterstrichenen Aufruf der Schleife, loop positionList
Ich hoffe, Sie können helfen, danke im Voraus
Pedro Dusso
EDIT AList.map, die die Sortierfunktion übergibt, wäre ein guter Ansatz?
LÖSUNG
let SortPositionList (positionList : Position list) =
List.map (fun (Position(position)) -> List.sort(position)) positionList
Da meine Positionsstruktur ein (int * Piece) lst ist, führe ich in der anonymen Funktion einen Mustervergleich durch und sortiere sie.
Vielen Dank für die Antworten!