Я пишу пакет креслень з деякими частинами, і у мене є оператори та типи даних, що розкидані через групу. Однак я не хочу, щоб користувачі щоразу додавали відповідні модулі, оскільки це було б дуже безладно, наприклад, я мав би Point
клас, Monoid
роль та Style
клас у різних шляхах, як це
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 {...}
Мені хотілося б зробити haskell
подібну прелюдію lib/Package/Prelude.pm6
з тим, що я можу писати такі сценарії
use Package::Prelude;
# I can use Point right away, Style etc...
а не робити
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
Я спробував багато речей:
- Ця версія не дає мені належного ефекту, я повинен набрати весь шлях до точки, тобто
Package::Data::Point
...
unit module Package::Prelude;
# $?FILE = lib/Package/Prelude.pm6
use Package::Data::Style;
use Package::Data::Point;
use Package::Data::Monoid;
- Ця версія дає мені
Point
відразу, але у мене виникають проблеми з операторами і так далі, також я просто хотів би автоматично додати все з експортованих процедур у згадані приклади пакетів.
# $?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
...
}
Чи знаєте ви, хто краще і швидше може отримати такий файл, що нагадує прелюдію?
unit class Package::Data::Point
. Не потрібно користуватисяmodule
.