{- Copyright (C) 2018 Dr. Alistair Ward This file is part of WeekDaze. WeekDaze is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. WeekDaze is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with WeekDaze. If not, see <http://www.gnu.org/licenses/>. -} {- | [@AUTHOR@] Dr. Alistair Ward [@DESCRIPTION@] -} module BishBosh.Data.Num ( -- * Functions inClosedUnitInterval ) where import Control.Arrow((&&&)) -- | Whether the specified number lies within the closed unit-interval, @[0,1]@; <https://en.wikipedia.org/wiki/Unit_interval>. inClosedUnitInterval :: (Num n, Ord n) => n -> Bool inClosedUnitInterval :: n -> Bool inClosedUnitInterval = (Bool -> Bool -> Bool) -> (Bool, Bool) -> Bool forall a b c. (a -> b -> c) -> (a, b) -> c uncurry Bool -> Bool -> Bool (&&) ((Bool, Bool) -> Bool) -> (n -> (Bool, Bool)) -> n -> Bool forall b c a. (b -> c) -> (a -> b) -> a -> c . ((n -> n -> Bool forall a. Ord a => a -> a -> Bool >= n 0) (n -> Bool) -> (n -> Bool) -> n -> (Bool, Bool) forall (a :: * -> * -> *) b c c'. Arrow a => a b c -> a b c' -> a b (c, c') &&& (n -> n -> Bool forall a. Ord a => a -> a -> Bool <= n 1))