我正在编写一个包含某些部分的图形包,并且有一些运算符和数据类型分散在整个进程中。但是我不希望用户每次都添加相应的模块,因为这很混乱,例如,我将在这样的不同路径中有一个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
。