lens-3.2: Lenses, Folds and Traversals

PortabilityRank2Types
Stabilityexperimental
MaintainerEdward Kmett <ekmett@gmail.com>
Safe HaskellSafe-Inferred

Data.Complex.Lens

Description

 

Synopsis

Documentation

real :: Simple Lens (Complex a) aSource

Access the realPart of a Complex number

>>> (1.0 :+ 0.0)^.real
1.0
real :: Functor f => (a -> f a) -> Complex a -> f (Complex a)

imaginary :: Simple Lens (Complex a) aSource

Access the imaginaryPart of a Complex number

>>> (0.0 :+ 1.0)^.imaginary
1.0
imaginary :: Functor f => (a -> f a) -> Complex a -> f (Complex a)

polarize :: (RealFloat a, RealFloat b) => Iso (Complex a) (Complex b) (a, a) (b, b)Source

This isn't quite a legal lens. 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. So don't do that!

Otherwise, this is a perfectly cromulent Lens.

traverseComplex :: Traversal (Complex a) (Complex b) a bSource

Traverse both the real and imaginary parts of a Complex number.

 traverseComplex :: Applicative f => (a -> f b) -> Complex a -> f (Complex b)