संभव नहीं है। जब आप with
के साथ पैटर्न मिलान करते हैं, तो संदर्भ में प्रकार मिलान किए गए कन्स्ट्रक्टर से निकाली गई जानकारी के साथ अपडेट किए जाते हैं। case
ऐसे अद्यतन का कारण नहीं है।
उदाहरण के लिए, with
साथ नहीं बल्कि case
के साथ निम्न काम करता है:
import Data.So
-- here (n == 10) in the goal type is rewritten to True or False
-- after the match
maybeTen : (n : Nat) -> Maybe (So (n == 10))
maybeTen n with (n == 10)
maybeTen n | False = Nothing
maybeTen n | True = Just Oh
-- Here the context knows nothing about the result of (n == 10)
-- after the "case" match, so we can't fill in the rhs
maybeTen' : (n : Nat) -> Maybe (So (n == 10))
maybeTen' n = case (n == 10) of
True => ?a
False => ?b
स्रोत
2016-02-24 19:05:48
जवाब एनड्रास के लिए बहुत धन्यवाद। – jhegedus
तो मूल रूप से 'साथ' एक प्रकार का 'मामला' है जिसमें सरल 'केस' की तुलना में प्रकार-स्तर के "मजबूत" कनेक्शन होते हैं। बहुत कम बोलते हुए। – jhegedus
आईआईआरसी 'एक नई शीर्ष-स्तरीय परिभाषा के लिए desugars के साथ, जिसमें पैरेंट फ़ंक्शन की तुलना में अतिरिक्त तर्क हैं, और यह मौलिक रूप से फ़ंक्शन परिभाषाएं हैं जो तर्क पैटर्न में सभी प्रकार की निर्भरताओं को लागू/अद्यतन करती हैं। –