Sha256: 033b1a4d88c6475e35c2f3fc430497c735063c85cfc13dea433d48401fb7891d

Contents?: true

Size: 908 Bytes

Versions: 271

Compression:

Stored size: 908 Bytes

Contents

module Meetup
  ( meetup
  , Week(..)
  ) where

import Prelude
import Data.Array (catMaybes, filter, last, (!!))
import Data.Date (Date, Month, Weekday, Year, day, exactDate, weekday)
import Data.Enum (enumFromTo, toEnum)
import Data.Maybe (Maybe(..))

data Week = First
          | Second
          | Third
          | Fourth
          | Last
          | Teenth

sat :: Week -> Array Date -> Maybe Date
sat First  ds = ds !! 0
sat Second ds = ds !! 1
sat Third  ds = ds !! 2
sat Fourth ds = ds !! 3
sat Last   ds = last ds
sat Teenth ds = do
  lot <- toEnum 13
  hit <- toEnum 19
  case filter (day >>> between lot hit) ds of
    [e] -> pure e
    _ -> Nothing

meetup :: Year -> Month -> Week -> Weekday -> Maybe Date
meetup y m w wd = enumFromTo bottom top
                  # map (exactDate y m)
                  # catMaybes
                  # filter (\d -> weekday d == wd)
                  # sat w

Version data entries

271 entries across 271 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/purescript/exercises/meetup/examples/src/Meetup.purs
trackler-2.2.1.179 tracks/purescript/exercises/meetup/examples/src/Meetup.purs
trackler-2.2.1.178 tracks/purescript/exercises/meetup/examples/src/Meetup.purs
trackler-2.2.1.177 tracks/purescript/exercises/meetup/examples/src/Meetup.purs
trackler-2.2.1.176 tracks/purescript/exercises/meetup/examples/src/Meetup.purs
trackler-2.2.1.175 tracks/purescript/exercises/meetup/examples/src/Meetup.purs
trackler-2.2.1.174 tracks/purescript/exercises/meetup/examples/src/Meetup.purs
trackler-2.2.1.173 tracks/purescript/exercises/meetup/examples/src/Meetup.purs
trackler-2.2.1.172 tracks/purescript/exercises/meetup/examples/src/Meetup.purs
trackler-2.2.1.171 tracks/purescript/exercises/meetup/examples/src/Meetup.purs
trackler-2.2.1.170 tracks/purescript/exercises/meetup/examples/src/Meetup.purs
trackler-2.2.1.169 tracks/purescript/exercises/meetup/examples/src/Meetup.purs
trackler-2.2.1.167 tracks/purescript/exercises/meetup/examples/src/Meetup.purs
trackler-2.2.1.166 tracks/purescript/exercises/meetup/examples/src/Meetup.purs
trackler-2.2.1.165 tracks/purescript/exercises/meetup/examples/src/Meetup.purs
trackler-2.2.1.164 tracks/purescript/exercises/meetup/examples/src/Meetup.purs
trackler-2.2.1.163 tracks/purescript/exercises/meetup/examples/src/Meetup.purs
trackler-2.2.1.162 tracks/purescript/exercises/meetup/examples/src/Meetup.purs
trackler-2.2.1.161 tracks/purescript/exercises/meetup/examples/src/Meetup.purs
trackler-2.2.1.160 tracks/purescript/exercises/meetup/examples/src/Meetup.purs