nehme an wir haben ein sehr einfaches Modell:Implementierung einfaches Geschäftsmodell in Haskell
Station
mindestens einen Train
Train
mindestens zwei
Das Modell, was Stationen jeder zu überprüfen, um zu ermöglichen, hat s Station
hat Zugfahrten gegeben und überprüft, welche Züge eine bestimmte Station besuchen.
Wie modelliert man es in Haskell?
Ich bin ein Neuling Haskell, so mir bitte korrigieren: sobald ein Objekt erstellt wird, können Sie es nicht ändern können - Sie nur ein neues Objekt basierend auf, dass man (~ Unveränderlichkeit) machen kann. Habe ich recht? Wenn ja, Ich muss viele temporäre Variablen mit semi-initialisierten Objekten erstellen (während Deserialisierung oder sogar in Komponententests).
Im Grunde brauche ich ein Beispiel für die Modellierung von Domänenklassen in Haskell - nach dem Lesen von "Lerne ein Haskell ..." Ich habe immer noch keine Idee, wie man diese Sprache benutzt.
Für 'Station' könnte man' Station (NonEmpty TrainId) 'verwenden, aber das hilft leider nicht für Züge. – Landei
@Daniel - danke für deine Antwort. Einige Fragen zu deinem Code: Erstens, kannst du Vorwärts-Deklarationen ** zu Objekten ** in Haskell machen? Zweitens, wenn Sie "regional = Train grandCentral" schreiben - ist "grandCentral" eine ** Referenz **, ** Zeiger ** oder ** Kopie ** des Objekts? Nun, wie ich schon sagte - ich bin ein Haskell-Neuling, aber wenn es keinen richtigen Weg gibt, reale Logik/Relationen zu modellieren, wie sollen wir dann diese Sprache benutzen? Ich mag die Idee mit der Karte. – emesx
@elmes Es gibt keine Vorwärts- oder Rückwärtsdeklarationen. Es gibt nur Erklärungen. Wenn Sie 'regional = Train grandCentral' schreiben, erzeugt die GHC-Implementierung einen Thunk, der, wenn er ausgewertet wird, den' Train'-Tag und einen Zeiger auf den 'grandCentral'-Thunk erzeugt, in welchem Auswertungszustand 'grandCentral' gerade ist . Ich bin mir nicht sicher, ob ich die Hypothese Ihrer letzten Frage verstehe, nämlich dass es keinen richtigen Weg gibt, reale Logik/Relationen zu modellieren; kannst du sagen, was du genauer willst und in welchem Sinne das nicht erreichbar ist? –