| Copyright | (C) 2012-15 Edward Kmett |
|---|---|
| License | BSD-style (see the file LICENSE) |
| Maintainer | Edward Kmett <ekmett@gmail.com> |
| Stability | experimental |
| Portability | non-portable |
| Safe Haskell | Safe |
| Language | Haskell98 |
Data.Complex.Lens
Description
Lenses and traversals for complex numbers
Documentation
_polar :: RealFloat a => Iso' (Complex a) (a, a) Source
This isn't quite a legal Lens. Notably the
viewl (setl 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 *~ 220.0 :+ 40.0
This isn't quite a legal Lens. Notably the
viewl (setl 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) ≈ 2True
This isn't quite a legal Lens. Notably the
viewl (setl 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.