तर्कसंगत रूप से हाँ सबसेट्स प्रकार हैं जो मनमाने ढंग से स्थितियों पर निर्भर हो सकते हैं। हालांकि, टाइप सिस्टम को अबाधित के रूप में वर्गीकृत किया जाएगा क्योंकि टाइप इनवेरिएंट लागू नहीं किए जाते हैं।
विशेष रूप से, एक चर के प्रकार बाधा केवल, जैसे
subset OrderedList of List where [<=] @$_;
my OrderedList $list = [1, 2, 3];
$list[0] = 42;
say $list ~~ OrderedList;
काम पर चेक किया जाता है, तो एक वस्तु है कि यह एक सबसेट से ड्रॉप एक वस्तु धारण एक चर के लिए नेतृत्व करेंगे बनाने के लिए संशोधन यह करने के लिए सक्षम नहीं होना चाहिए
आप पारदर्शी गार्ड ऑब्जेक्ट्स में बॉक्सिंग ऑब्जेक्ट्स द्वारा किसी भी विधि कॉल के बाद ऑब्जेक्ट सिस्टम को स्वचालित रूप से प्रकार की जांच करने के लिए कुछ मेटा-ऑब्जेक्ट विज़ार्ड्री का उपयोग कर सकते हैं।
एक अनुभवहीन क्रियान्वयन ऐसा दिखाई दे सकता है:
class GuardHOW {
has $.obj;
has $.guard;
has %!cache =
gist => sub (Mu \this) {
this.DEFINITE
?? $!obj.gist
!! "({ self.name(this) })";
},
UNBOX => sub (Mu $) { $!obj };
method find_method(Mu $, $name) {
%!cache{$name} //= sub (Mu $, |args) {
POST $!obj ~~ $!guard;
$!obj."$name"(|args);
}
}
method name(Mu $) { "Guard[{ $!obj.^name }]" }
method type_check(Mu $, $type) { $!obj ~~ $type }
}
sub guard($obj, $guard) {
use nqp;
PRE $obj ~~ $guard;
nqp::create(nqp::newtype(GuardHOW.new(:$obj, :$guard), 'P6int'));
}
यह निम्न कर देगा असफल:
my $guarded-list = guard([1, 2, 3], OrderedList);
$guarded-list[0] = 42;
ठीक है, कि पर्ल अर्थों में 6 है "मूल्यों के आधार पर प्रकार", तो हाँ ज़रूर। इस परिभाषा से, सी भी करता है। लेकिन केवल अनुक्रमित प्रकार होने के कारण ही बहुत उपयोगी नहीं है। – Ven
एफडब्ल्यूआईडब्लू, [मैंने पैरामीटरकृत भूमिकाओं को अपहृत करने पर भी विचार किया] (https://github.com/vendethiel/6meta-experiments/blob/master/church.pl), लेकिन केवल 'गिनती' संस्करण काम करता है (जो उन्हें रनटाइम पर छोड़ देता है) ।भूमिकाओं को निर्भर प्रकारों के समान कुछ पाने के लिए "तत्काल" चरण (जैसे सी ++ टेम्पलेट्स) की आवश्यकता होगी, लेकिन यह मेनू पर नहीं है :-)। – Ven
@ वेन यह निर्भर टाइपिंग की स्वीकार्य परिभाषा की तरह लगता है जैसे "पर्याप्त उपयोगी/सामान्य संकलन-समय पूरी तरह से निर्णायक टाइपशेकिंग भविष्यवाणी करता है जो मानों पर निर्भर करता है" ताकि 2017 में, वेनिला अनुक्रमित प्रकारों की गणना न हो क्योंकि वे उपयोगी या सामान्य नहीं माना जाता है लेकिन टाइपिंग जांच जो एक एसएमटी सॉल्वर के उपयुक्त उपयोग करता है। तो अगर पी 6 ऐसा था कि एक कंपाइलर 'कहां' खंडों का विश्लेषण कर सकता है और 'जहां Int | स्ट्र | IntStr' प्रकार संकलन-समय प्रकार-जांच में बाधा है (क्या यह कभी ऐसा कर सकता है?), यह अभी भी निर्भर टाइपिंग नहीं होगा। क्या वह करीब है? – raiph