J'écris un package de dessin avec certaines parties et j'ai des opérateurs et des types de données dispersés. Cependant, je ne veux pas que les utilisateurs ajoutent les modules correspondants à chaque fois, car ce serait assez compliqué, par exemple, j'aurais une Point
classe, un Monoid
rôle et une Style
classe dans des chemins différents comme celui-ci
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 {...}
Je voudrais avoir un haskell
prélude similaire lib/Package/Prelude.pm6
avec l'effet que je peux écrire de tels scripts
use Package::Prelude;
# I can use Point right away, Style etc...
au lieu de faire
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
J'ai essayé beaucoup de choses:
- Cette version ne me donne pas le bon effet, je dois taper tout le chemin à pointer, c'est à dire
Package::Data::Point
...
unit module Package::Prelude;
# $?FILE = lib/Package/Prelude.pm6
use Package::Data::Style;
use Package::Data::Point;
use Package::Data::Monoid;
- Cette version me donne
Point
tout de suite, mais j'ai des problèmes avec les opérateurs et ainsi de suite, je voudrais également ajouter automatiquement tout ce qui provient des routines exportées dans les exemples de packages mentionnés.
# $?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
...
}
Connaissez-vous un moyen meilleur et plus rapide d'obtenir un tel fichier prélude?
unit class Package::Data::Point
. Vous n'avez pas à utilisermodule
.