मुझे एक अच्छा article मिला, लगभग call with current continuation
पैटर्न। जैसा कि मैं समझता हूं, वे योजना और undelimited continuations
का उपयोग करते हैं। क्या लेख से पैटर्न स्कैला में लागू किए जा सकते हैं? क्या स्कैला में delimited continuations
पैटर्न के बारे में कोई लेख है?स्कैला में "कॉल-सीसी" पैटर्न?
14
A
उत्तर
13
हां, वे बिल्कुल कर सकते हैं। callCC
स्काला में इस तरह दिखता है:
def callCC[R, A, B](f: (A => Cont[R, B]) => Cont[R, A]): Cont[R, A] =
Cont(k => f(a => Cont(_ => k(a))) run k)
कहाँ Cont
एक डेटा संरचना है कि एक निरंतरता कब्जा है:
def divExcpt[R](x: Int, y: Int, h: String => Cont[R, Int]): Cont[R, Int] =
callCC[R, Int, String](ok => for {
err <- callCC[R, String, Unit](notOK => for {
_ <- if (y == 0) notOK("Denominator 0") else Cont[R, Unit](_(()))
r <- ok(x/y)
} yield r)
r <- h(err)
} yield r)
:
case class Cont[R, A](run: (A => R) => R) {
def flatMap[B](f: A => Cont[R, B]): Cont[R, B] =
Cont(k => run(a => f(a) run k))
def map[B](f: A => B): Cont[R, B] =
Cont(k => run(a => k(f(a))))
}
यहाँ कैसे आप इसका इस्तेमाल कर सकते हैं जांचे हुए अपवादों अनुकरण करने के लिए है आप इस फ़ंक्शन को निम्नानुसार कॉल करेंगे:
scala> divExcpt(10, 2, error) run println
5
scala> divExcpt(10, 0, error) run println
java.lang.RuntimeException: Denominator 0
3
स्कैला में टाइप की गई सीमित निरंतरता का कार्यान्वयन होता है जिसे कंपाइलर और मानक लाइब्रेरी के साथ भेज दिया जाता था, लेकिन इसे external module पर निकाला गया था और तब से बहुत सड़ने के लिए छोड़ दिया गया था। यह एक बड़ी शर्म की बात है, और मैं उन सभी को प्रोत्साहित करता हूं जो सीमित निरंतरताओं में दिलचस्पी रखते हैं ताकि वे यह दिखा सकें कि वे इसका अस्तित्व और योगदान करके इसका अस्तित्व रखते हैं।
संबंधित मुद्दे
- 1. स्कैला में पैटर्न मिलान
- 2. क्या स्कैला में डीएओ पैटर्न अप्रचलित है?
- 3. स्कैला पैटर्न मिलान डिफ़ॉल्ट गार्ड
- 4. बड़े स्कैला केस कक्षाओं से पैटर्न कैसे पैटर्न करें?
- 5. स्कैला स्ट्रिंग पैटर्न सर्वोत्तम अभ्यास से मिलान
- 6. स्कैला कार्यात्मक डिजाइन पैटर्न का कैटलॉग
- 7. क्या स्कैला केस पैटर्न प्रथम श्रेणी हैं?
- 8. स्कैला पैटर्न मिलान और टाइप अनुमान
- 9. स्कैला - सशर्त बयान के साथ पैटर्न मिलान?
- 10. स्कैला ऋण पैटर्न, वैकल्पिक फ़ंक्शन पैरा
- 11. बाइटकोड स्तर पर लागू स्कैला में पैटर्न मिलान कैसे है?
- 12. स्कैला में एक नेस्टेड क्लास पैटर्न-मिलान कैसे करें?
- 13. स्कैला के पैटर्न मिलान प्रणाली में तुलना ऑपरेटरों का उपयोग
- 14. स्कैला में रणनीति पैटर्न के लिए बेहतर विकल्प?
- 15. स्कैला
- 16. स्कैला
- 17. स्कैला
- 18. स्कैला
- 19. स्कैला
- 20. क्या स्कैला के पैटर्न मिलान संख्या पर कोई सीमा है?
- 21. स्कैला केक पैटर्न हार्डकोडेड निर्भरता को प्रोत्साहित करते हैं?
- 22. स्कैला पैटर्न मिलान कह रहा है "मैच संपूर्ण नहीं है!"
- 23. स्कैला
- 24. स्कैला
- 25. 2.10 में पैटर्न मिलान के साथ स्कैला वास्तव में क्या सुधार हुआ?
- 26. इस स्कैला पैटर्न मिलान में एक अनचेक प्रकार तर्क के बारे में चेतावनी?
- 27. वर्ग [_] प्रकार पर पैटर्न मिलान?
- 28. स्कैला में मिक्सिन बनाम संरचना
- 29. स्कैला में पीओजेओ/जावाबीन पैटर्न का इलाज कैसे किया जाता है?
- 30. क्या स्कैला अज्ञात कार्यों में पैटर्न-मिलान के लिए एक क्लीनर तरीका है?