radian 0.0.3 → 0.0.4
raw patch · 3 files changed
+46/−38 lines, 3 files
Files
- changelog +4/−0
- radian.cabal +1/−1
- src/Data/Radian.hs +41/−37
changelog view
@@ -1,3 +1,7 @@+0.0.4++* Delete the `Radians` data type -- just use raw floating-point types.+ 0.0.3 * Change the `degrees` iso.
radian.cabal view
@@ -1,5 +1,5 @@ name: radian-version: 0.0.3+version: 0.0.4 license: BSD3 license-file: LICENCE author: Tony Morris <ʇǝu˙sıɹɹoɯʇ@ןןǝʞsɐɥ>
src/Data/Radian.hs view
@@ -2,58 +2,62 @@ {-# LANGUAGE GeneralizedNewtypeDeriving #-} module Data.Radian(- Radian-, radians-, degrees+ toRadians+, fromRadians ) where -import Control.Lens(Iso, iso)-import Data.Eq(Eq)-import Data.Ord(Ord)-import Prelude(Show, Num((*)), Fractional((/)), Floating, Real, RealFrac, RealFloat, pi)+import Control.Lens(Iso, iso, from)+import Prelude(Num((*)), Fractional((/)), Floating, pi) -- $setup -- >>> import Control.Lens((#)) -- >>> import Prelude(Double) -newtype Radian a =- Radian a- deriving (Eq, Ord, Show, Num, Fractional, Floating, Real, RealFrac, RealFloat)---- | An isomorphism from radians to degrees.+-- | An isomorphism between radians and degrees. ----- >>> radians # (180 :: Double)--- Radian 3.141592653589793+-- >>> toRadians # (180 :: Double)+-- 3.141592653589793 ----- >> radians # (90 :: Double)--- Radian 1.5707963267948966+-- >> toRadians # (90 :: Double)+-- 1.5707963267948966 ----- >>> radians # (359 :: Double)--- Radian 6.265732014659643+-- >>> toRadians # (359 :: Double)+-- 6.265732014659643 ----- >>> radians # (360 :: Double)--- Radian 6.283185307179586+-- >>> toRadians # (360 :: Double)+-- 6.283185307179586 ----- >>> radians # (3600 :: Double)--- Radian 62.83185307179586+-- >>> toRadians # (3600 :: Double)+-- 62.83185307179586 ----- >>> radians # (1 :: Double)--- Radian 1.7453292519943295e-2+-- >>> toRadians # (1 :: Double)+-- 1.7453292519943295e-2 ----- >>> radians # ((-180) :: Double)--- Radian (-3.141592653589793)-radians ::+-- >>> toRadians # ((-180) :: Double)+-- -3.141592653589793+toRadians :: (Floating a, Floating b) =>- Iso (Radian a) (Radian b) a b-radians =+ Iso a b a b+toRadians = iso- (\(Radian a) -> a / pi * 180)- (\a -> Radian (a / 180 * pi))+ (\a -> a / pi * 180)+ (\a -> a / 180 * pi) -degrees ::+-- | An isomorphism between degrees and radians.+--+-- >>> fromRadians # (0 :: Double)+-- 0.0+--+-- >>> fromRadians # (1 :: Double)+-- 57.29577951308232+--+-- >>> fromRadians # ((-1) :: Double)+-- -57.29577951308232+--+-- >>> fromRadians # (3 :: Double)+-- 171.88733853924697+fromRadians :: (Floating a, Floating b) =>- Iso (Radian a) (Radian b) a b-degrees =- iso- (\(Radian a) -> a)- Radian+ Iso a b a b+fromRadians =+ from toRadians