Copyright | (C) 2012-16 Edward Kmett |
---|---|
License | BSD-style (see the file LICENSE) |
Maintainer | Edward Kmett <ekmett@gmail.com> |
Stability | experimental |
Portability | non-portable |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
Data.Complex.Lens
Contents
Description
Lenses and traversals for complex numbers
Synopsis
- _realPart :: Lens' ( Complex a) a
- _imagPart :: Lens' ( Complex a) a
- _polar :: RealFloat a => Iso' ( Complex a) (a, a)
- _magnitude :: RealFloat a => Lens' ( Complex a) a
- _phase :: RealFloat a => Lens' ( Complex a) a
- _conjugate :: RealFloat a => Iso' ( Complex a) ( Complex a)
- pattern Polar :: RealFloat a => a -> a -> Complex a
- pattern Real :: ( Eq a, Num a) => a -> Complex a
- pattern Imaginary :: ( Eq a, Num a) => a -> Complex a
- pattern Conjugate :: Num a => Complex a -> Complex a
Documentation
_polar :: RealFloat a => Iso' ( Complex a) (a, a) 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, 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
Lens
.
_magnitude :: RealFloat a => Lens' ( Complex a) a Source #
Access the
magnitude
of a
Complex
number.
>>>
(10.0 :+ 20.0) & _magnitude *~ 2
20.0 :+ 40.0
This isn't
quite
a legal
Lens
. 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
Lens
.
Setting the
magnitude
of a zero
Complex
number assumes the
phase
is 0.
_phase :: RealFloat a => Lens' ( Complex a) a Source #
Access the
phase
of a
Complex
number.
>>>
(mkPolar 10 (2-pi) & _phase +~ pi & view _phase) ≈ 2
True
This isn't
quite
a legal
Lens
. Notably the
view
l (set
l b a) = b
law is violated when you set a
phase
outside the range
(-
.
The phase is always in that range when queried. So don't do that!
pi
,
pi
]
Otherwise, this is a perfectly cromulent
Lens
.