Estou escrevendo um pacote de desenho com algumas peças e tenho operadores e tipos de dados espalhados por toda parte. No entanto, eu não quero que os usuários adicionem os módulos correspondentes todas as vezes, pois seria muito complicado, por exemplo, eu teria uma Point
classe, uma Monoid
função e uma Style
classe em caminhos diferentes como este
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 {...}
Eu gostaria de ter um haskell
prelúdio semelhante lib/Package/Prelude.pm6
com o efeito de que eu posso escrever esses scripts
use Package::Prelude;
# I can use Point right away, Style etc...
em vez de fazer
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
Eu tentei muitas coisas:
- Esta versão não me dá o efeito certo, tenho que digitar todo o caminho a apontar, ou seja,
Package::Data::Point
...
unit module Package::Prelude;
# $?FILE = lib/Package/Prelude.pm6
use Package::Data::Style;
use Package::Data::Point;
use Package::Data::Monoid;
- Esta versão me fornece o
Point
imediato, mas tenho problemas com os operadores e assim por diante. Também gostaria de adicionar automaticamente tudo, desde as rotinas exportadas nos pacotes de exemplo mencionados.
# $?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
...
}
Vocês conhecem uma maneira melhor e rápida de obter um arquivo como um prelúdio?
unit class Package::Data::Point
. Você não precisa usarmodule
.