lens-4.17: Lenses, Folds and Traversals

Data.Complex.Lens

Contents

Description

Lenses and traversals for complex numbers

Synopsis

# Documentation

_realPart :: Lens' (Complex a) a #

Access the realPart of a Complex number.

>>> (a :+ b)^._realPart
a

>>> a :+ b & _realPart *~ 2
a * 2 :+ b

_realPart :: Functor f => (a -> f a) -> Complex a -> f (Complex a)

_imagPart :: Lens' (Complex a) a #

Access the imagPart of a Complex number.

>>> (a :+ b)^._imagPart
b

>>> a :+ b & _imagPart *~ 2
a :+ b * 2

_imagPart :: Functor f => (a -> f a) -> Complex a -> f (Complex a)

_polar :: RealFloat a => Iso' (Complex a) (a, a) #

This isn't quite a legal ReifiedLens. Notably the

view l (set l b a) = b

law is violated when you set a polar value with 0 magnitude and non-zero phase as the phase information is lost, or with a negative magnitude which flips the phase and retains a positive magnitude. So don't do that!

Otherwise, this is a perfectly cromulent ReifiedLens.

_magnitude :: RealFloat a => Lens' (Complex a) a #

Access the magnitude of a Complex number.

>>> (10.0 :+ 20.0) & _magnitude *~ 2
20.0 :+ 40.0


This isn't quite a legal ReifiedLens. Notably the

view l (set l b a) = b

law is violated when you set a negative magnitude. This flips the phase and retains a positive magnitude. So don't do that!

Otherwise, this is a perfectly cromulent ReifiedLens.

Setting the magnitude of a zero Complex number assumes the phase is 0.

_phase :: RealFloat a => Lens' (Complex a) a #

Access the phase of a Complex number.

>>> (mkPolar 10 (2-pi) & _phase +~ pi & view _phase) ≈ 2
True


This isn't quite a legal ReifiedLens. Notably the

view l (set l b a) = b

law is violated when you set a phase outside the range (-pi, pi]. The phase is always in that range when queried. So don't do that!

Otherwise, this is a perfectly cromulent ReifiedLens.

_conjugate :: RealFloat a => Iso' (Complex a) (Complex a) #

Access the conjugate of a Complex number.

>>> (2.0 :+ 3.0) & _conjugate . _imagPart -~ 1
2.0 :+ 4.0

>>> (mkPolar 10.0 2.0 ^. _conjugate . _phase) ≈ (-2.0)
True


# Pattern Synonyms

pattern Polar :: forall a. RealFloat a => a -> a -> Complex a #

pattern Real :: forall a. (Eq a, Num a) => a -> Complex a #

pattern Imaginary :: forall a. (Eq a, Num a) => a -> Complex a #

pattern Conjugate :: forall a. Num a => Complex a -> Complex a #