我用perl6的subset命令和一些针对这些类型进行特化的多个子例程构建了一个类型层次结构。当发生多重分派时,如何使最窄的子类型专门化的子例程具有最高优先级?
这是简化代码:
#! /usr/bin/env perl6
use v6.c;
proto check($value) { * }
subset Positive of Int where * > 0;
subset PositiveEven of Positive where * %% 2;
multi check(Int $value) {
say "integer"
}
multi check(Positive $value) {
say "positive"
}
multi check(PositiveEven $value) {
say "positive & even"
}
# example:
check(32);
# expected output:
# positive & even
# actual output:
# positive