私は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
インスタンスは、複素数をちょうどサイズ2の配列として扱うようです。両方とも矢印操作のように見えます。それらの背後には数学的根拠はありますか?そこにあるかどうか、彼らは何のために使われていますか?
これは法を遵守しているインスタンスなので、存在しない理由はありません(これは「数学的な」基準です)。 – user2407038
複雑な分析への接続はなく、複素数はここではサイズ2の配列ですか? –
複素数*は、ある意味ではサイズ2の配列です。ℂは²²と同型です。 – chepner