2017-11-08 13 views
9

मैं जब मैं GHC Data.Complex मॉड्यूल से Applicative Complex और Monad Complex के उदाहरण के स्रोत कोड को पढ़ने के लिए थोड़े हैरान था:जटिल संख्या फ़ैक्टर और मोनड का अर्थ और उपयोग?

-- | @since 4.9.0.0 
instance Applicative Complex where 
    pure a = a :+ a 
    f :+ g <*> a :+ b = f a :+ g b 
    liftA2 f (x :+ y) (a :+ b) = f x a :+ f y b 

-- | @since 4.9.0.0 
instance Monad Complex where 
    a :+ b >>= f = realPart (f a) :+ imagPart (f b) 

क्या ...? Applicative Complex उदाहरण जटिल संख्याओं को केवल आकार-दो सरणी के रूप में पेश करता प्रतीत होता है। और वे दोनों तीर संचालन की तरह लगते हैं। क्या उनके पीछे कोई गणितीय आधार है? या तो वहां है या नहीं, वे किस लिए उपयोग किए जाते हैं?

+0

वे कानून पालन करने वाले उदाहरण हैं, इसलिए उनके पास मौजूद नहीं होने का कोई कारण नहीं है (यह 'गणितीय' आधार है) – user2407038

+0

इसलिए जटिल विश्लेषण के लिए कोई कनेक्शन नहीं हैं, और जटिल संख्याएं केवल आकार-दो सरणी हैं? –

+0

जटिल संख्या * कुछ हैं, कुछ आकार में, केवल आकार 2 के सरणी हैं। ℂ is² के लिए isomorphic है। – chepner

उत्तर

8

संपादित नीचे फिर से नोट जोड़ने के लिए: "रैखिक" पैकेज।

उदाहरणों इस Trac 10609 ticketa mailing list post द्वारा शुरू की जहां Fumiaki Kinoshita विख्यात आधार पुस्तकालयों कि सिर्फ एक ही रास्ता में definable लग रहा था और उन्हें जोड़ने के लिए एक पैच प्रस्तावित में कुछ लापता उदाहरणों थीं अनुसार जोड़ा गया था।

जहां तक ​​मैं देख सकता हूँ, वहाँ उन्हें जोड़ने के लिए कोई गणितीय प्रेरणा कम से कम एक गणितीय सार्थक कार्रवाई applicatively व्यक्त किया जा सकता है, अर्थात् अदिश गुणन हालांकि था,:

> pure (*) <*> pure 2 <*> (3 :+ 4) 
6 :+ 8 
> 

करने के लिए एक follow-up में मेलिंग सूची पोस्ट के ऊपर, एडवर्ड Kmett ने नोट किया कि वह पक्ष में था क्योंकि उसे Complex के लिए linear पैकेज में लापता उदाहरणों के लिए तैयार करने के लिए अनाथ उदाहरण जोड़ना पड़ा।

ऐसा लगता है कि उन्हें उदाहरण Complex के लिए उदाहरण को परिभाषित करने में उपयोगी पाया गया है, इस प्रकार अनिवार्य रूप से Complex दो आयामी वेक्टर का एक विशेष मामला बना रहा है।

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