Ich habe ein Modul A und B, die beide den Event
Typ exportieren. Modul C definiert ein Typen-Synonym für Event
von Modul A und ruft es InputEvent
auf.Kann ich die Datenkonstruktoren eines Typ-Synonyms importieren, ohne die ViewPatterns GHC-Erweiterung zu verwenden?
ich dann verbrauchen beide Modul B und Modul C in einem Modul D:
module D where
import B (Event)
import C (InputEvent)
Allerdings, wenn ich versuchen InputEvent
‚s Typkonstruktoren zu importieren (sagen wir, MakeEvent
), erhalte ich die Fehlermeldung:
Module
‘C’
does not export
‘InputEvent(MakeEvent)’
dies durch Verwendung der ViewPatterns GHC Erweiterung gelöst werden kann, und eine Alias MakeEvent von Modul C exportieren:
makeEvent = MakeEvent
Gibt es jedoch eine Möglichkeit, den MakeEvent-Datenkonstruktor zu importieren, ohne die ViewPatterns-Erweiterung zu verwenden?
Typ Synonyme haben keine Konstruktoren, so dass der Import der Konstruktoren eines Typ-Synonyms fehlschlägt. Importieren Sie die Konstruktoren von dem Modul, das sie exportiert: 'import {B/C} (Event (MakeEvent))'. Pattern-Syns helfen hier nicht wirklich - der 'MakeEvent'-Konstruktor würde mit dem' MakeEvent'-Muster kollidieren, also müssten Sie diese qualifiziert importieren. Außerdem brauchen Sie keine solchen Aliase - einfach 'MakeEvent' aus dem Modul' C' reexportieren. – user2407038
Related: http://StackOverflow.com/Questions/35616041/Can-I-Export-Constructors-ALONG-With-Art-Alias –