Ich schreibe ein Zeichenpaket mit einigen Teilen und habe Operatoren und Datentypen, die überall verteilt sind. Ich möchte jedoch nicht, dass die Benutzer jedes Mal die entsprechenden Module hinzufügen, da dies ziemlich chaotisch wäre, zum Beispiel hätte ich eine Point
Klasse, eine Monoid
Rolle und eine Style
Klasse in verschiedenen Pfaden wie diesen
unit module Package::Data::Monoid;
# $?FILE = lib/Package/Data/Monoid.pm6
role Monoid {...}
unit module Package::Data::Point;
# $?FILE = lib/Package/Data/Point.pm6
class Point {...}
unit module Package::Data::Style;
# $?FILE = lib/Package/Data/Style.pm6
class Style {...}
Ich hätte gerne einen haskell
ähnlichen Auftakt lib/Package/Prelude.pm6
mit dem Effekt, dass ich solche Skripte schreiben kann
use Package::Prelude;
# I can use Point right away, Style etc...
anstatt zu tun
use Package::Data::Style;
use Package::Data::Point;
use Package::Data::Monoid;
# I can too use point right away, but for users not knowing the
# inner workings it's too overwhelming
Ich habe viele Dinge ausprobiert:
- Diese Version gibt mir nicht den richtigen Effekt, ich muss den gesamten Pfad eingeben, um zu zeigen, dh
Package::Data::Point
...
unit module Package::Prelude;
# $?FILE = lib/Package/Prelude.pm6
use Package::Data::Style;
use Package::Data::Point;
use Package::Data::Monoid;
- Diese Version gibt mir
Point
sofort das, aber ich bekomme Probleme mit den Operatoren und so weiter, außerdem möchte ich einfach automatisch alles aus den exportierten Routinen in den genannten Beispielpaketen hinzufügen.
# $?FILE = lib/Package/Prelude.pm6
use Package::Data::Style;
use Package::Data::Point;
use Package::Data::Monoid;
sub EXPORT {
hash <Point> => Point
, <Style> => Style
, <mappend> => &mappend
...
}
Kennen Sie einen besseren und schnelleren Weg, um eine solche Vorspiel-ähnliche Datei zu erhalten?
unit class Package::Data::Point
. Sie müssen nicht verwendenmodule
.