मैं मैनिंग से इडिस के साथ टाइप संचालित विकास के माध्यम से जा रहा हूं। एक उदाहरण दिया गया है जो सिखाता है कि फ़ंक्शन को किसी प्रकार के परिवार में दिए गए प्रकार में कैसे प्रतिबंधित किया जाए। हमारे पास Vehicle
प्रकार है जो PowerSource
का उपयोग करता है जो या तो Pedal
या Petrol
है और हमें एक फ़ंक्शन refill
लिखने की आवश्यकता है जो केवल उन वाहनों के लिए टाइप चेक करता है जो पेट्रोल को उनके पावरसोर्स के रूप में उपयोग करते हैं।इनपुट प्रकार और आउटपुट प्रकार को बाधित कैसे करें?
नीचे कोड काम करता है, लेकिन यह गारंटी नहीं देता है कि Car
को रीफिल करने से Car
और Bus
नहीं होगा। Car
दिए जाने पर दिए जाने पर और Bus
का उत्पादन करते समय Car
उत्पादन करने की अनुमति देने के लिए मुझे refill
फ़ंक्शन के हस्ताक्षर को बदलने की आवश्यकता कैसे होगी?
data PowerSource
= Pedal
| Petrol
data Vehicle : PowerSource -> Type
where
Bicycle : Vehicle Pedal
Car : (fuel : Nat) -> Vehicle Petrol
Bus : (fuel : Nat) -> Vehicle Petrol
refuel : Vehicle Petrol -> Nat -> Vehicle Petrol
refuel (Car fuel) x = Car (fuel + x)
refuel (Bus fuel) x = Bus (fuel + x)
इस उत्तर के लिए धन्यवाद यह हमारे राज्य के लिए हमारे संपत्ति consice छोड़ने की अनुमति देता है! बाहरी समारोह चाल के साथ यह दृष्टिकोण वास्तव में अच्छा है! – Shersh