war ich ein bisschen überrascht, als ich den Quellcode von Instanzen von Applicative Complex
und Monad Complex
von GHC Data.Complex
Modul lesen:Bedeutung und Verwendung von komplexen Zahlen funktor und monad?
-- | @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)
Was zum ...? Die Applicative Complex
Instanz scheint komplexe Zahlen nur als Größe-2-Arrays zu behandeln. Und beide scheinen eher Pfeiloperationen zu sein. Gibt es eine mathematische Grundlage dahinter? Entweder gibt es oder nicht, wofür werden sie verwendet?
Sie sind gesetzestreue Instanzen, es gibt also keinen Grund dafür, dass sie nicht existieren (dies ist die 'mathematische' Basis). – user2407038
Also gibt es keine Verbindungen zu komplexer Analyse und komplexe Zahlen sind nur Größe-zwei-Arrays hier? –
Komplexe Zahlen * sind * in gewissem Sinne nur Arrays der Größe 2. ℂ ist isomorph zu ℝ². – chepner