2015-03-26 2 views
8

जब मैं scalaz.effect.IO स्रोत कोड को देखा, मैंने देखा कि यह निम्न हस्ताक्षर के साथ एक विधि apply है:स्कालज़ में टॉवर [ए] और आइवरी टोवर क्या हैं?

case class Tower[A]() 
sealed trait IvoryTower 

Tower का एक उदाहरण है:

sealed trait IO[A] { 
    def apply(rw: Tower[IvoryTower]): Trampoline[(Tower[IvoryTower], A)] 
} 

Tower[A] और IvoryTower के रूप में परिभाषित कर रहे हैं :

object IvoryTower extends IvoryTowers 

trait IvoryTowers { 
    val ivoryTower = Tower[IvoryTower]() 
} 

उनका उद्देश्य क्या है ई कक्षाएं? IO.applyTower[IvoryTower] टाइप करने का तर्क क्यों स्वीकार करता है?

+2

मैं भी चाहता हूं कि स्कालज़ दस्तावेज हो। – rightfold

उत्तर

7

यह एक मजाक है: IvoryTowerRealWorld नामक हास्केल प्रकार का एक बंदरगाह है। (मेरी इच्छा है कि इसका एक स्पष्ट नाम हो - यह एक नए आने वालों के लिए अभेद्य दोनों बनने का प्रबंधन करता है और वास्तव में मजाकिया नहीं)। उदाहरण देखें https://wiki.haskell.org/IO_inside

+0

इसे आइवरी टॉवर क्यों कहा जाता है? मजेदार बानाना या इंटेरेपिड टाइगर क्यों नहीं? – ZhekaKozlov

+1

क्योंकि एक हाथीदांत टावर असली दुनिया के विपरीत माना जाता है। https://www.google.com/search?q=define%3Aivory%20tower – lmm

संबंधित मुद्दे