Ich habe oft eine Funktion mit mehreren Parametern des gleichen Typs, und manchmal verwenden sie in der falschen Reihenfolge. Als einfaches BeispielF # Phantom-Typen in der Praxis
let combinePath (path : string) (fileName : string) = ...
Es scheint mir, dass die Phantomtypen ein guter Weg sein würde, keine Verwechslungen zu fangen. Aber ich verstehe nicht, wie man das Beispiel in der einzigen F# phantom types question anwendet.
Wie würde ich Phantomtypen in diesem Beispiel implementieren? Wie würde ich combatePath aufrufen? Oder fehlt mir eine einfachere Lösung des Problems?
Da das ist ein Fall DUs, können Sie auch combinePath (Path (p)) (Fname (f)) = ... '' do lassen, das Ende -Ergebnis wird das gleiche sein :) –
Ja. Es wird einfacher sein. Aktualisierter Beitrag, danke! – Petr
Das würde bedeuten, einen Typ für jeden Parametertyp zu deklarieren. Ich denke, ich dachte, es könnte eine Art von Maßeinheiten, String String sein. Obwohl es auf diese Weise immer noch Typen für Pfad und Dateiname benötigt, ist es am Ende doch egal ... ich antworte auf meinen eigenen Punkt. –