Sha256: 064636cf83efa5ad80b6f34558947bdacac667d47b75c80a7d6831a6855465f7

Contents?: true

Size: 712 Bytes

Versions: 396

Compression:

Stored size: 712 Bytes

Contents

module Clock (fromHourMin, clockHour, clockMin, toString) where
import Text.Printf (printf)

newtype Clock = Clock { unClock :: Int } deriving (Show, Eq)

instance Num Clock where
  fromInteger n = Clock (fromInteger (n `mod` (24 * 60)))
  (Clock a) + (Clock b) = fromIntegral (a + b)
  (Clock a) - (Clock b) = fromIntegral (a - b)
  (Clock a) * (Clock b) = fromIntegral (a * b)
  abs = id
  signum = Clock . signum . unClock

fromHourMin :: Int -> Int -> Clock
fromHourMin h m = fromIntegral (h * 60 + m)

clockHour :: Clock -> Int
clockHour = (`div` 60) . unClock

clockMin :: Clock -> Int
clockMin = (`mod` 60) . unClock

toString :: Clock -> String
toString c = printf "%02d:%02d" (clockHour c) (clockMin c)

Version data entries

396 entries across 396 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/haskell/exercises/clock/examples/success-standard/src/Clock.hs
trackler-2.2.1.179 tracks/haskell/exercises/clock/examples/success-standard/src/Clock.hs
trackler-2.2.1.178 tracks/haskell/exercises/clock/examples/success-standard/src/Clock.hs
trackler-2.2.1.177 tracks/haskell/exercises/clock/examples/success-standard/src/Clock.hs
trackler-2.2.1.176 tracks/haskell/exercises/clock/examples/success-standard/src/Clock.hs
trackler-2.2.1.175 tracks/haskell/exercises/clock/examples/success-standard/src/Clock.hs
trackler-2.2.1.174 tracks/haskell/exercises/clock/examples/success-standard/src/Clock.hs
trackler-2.2.1.173 tracks/haskell/exercises/clock/examples/success-standard/src/Clock.hs
trackler-2.2.1.172 tracks/haskell/exercises/clock/examples/success-standard/src/Clock.hs
trackler-2.2.1.171 tracks/haskell/exercises/clock/examples/success-standard/src/Clock.hs
trackler-2.2.1.170 tracks/haskell/exercises/clock/examples/success-standard/src/Clock.hs
trackler-2.2.1.169 tracks/haskell/exercises/clock/examples/success-standard/src/Clock.hs
trackler-2.2.1.167 tracks/haskell/exercises/clock/examples/success-standard/src/Clock.hs
trackler-2.2.1.166 tracks/haskell/exercises/clock/examples/success-standard/src/Clock.hs
trackler-2.2.1.165 tracks/haskell/exercises/clock/examples/success-standard/src/Clock.hs
trackler-2.2.1.164 tracks/haskell/exercises/clock/examples/success-standard/src/Clock.hs
trackler-2.2.1.163 tracks/haskell/exercises/clock/examples/success-standard/src/Clock.hs
trackler-2.2.1.162 tracks/haskell/exercises/clock/examples/success-standard/src/Clock.hs
trackler-2.2.1.161 tracks/haskell/exercises/clock/examples/success-standard/src/Clock.hs
trackler-2.2.1.160 tracks/haskell/exercises/clock/examples/success-standard/src/Clock.hs