Skip to content

Commit fbdce5e

Browse files
authored
Merge pull request #31 from safareli/upFromIncluding
define upFromIncluding
2 parents d307db5 + e5e2fcf commit fbdce5e

File tree

3 files changed

+18
-4
lines changed

3 files changed

+18
-4
lines changed

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
"test": "pulp test"
77
},
88
"devDependencies": {
9-
"pulp": "^10.0.4",
10-
"purescript-psa": "^0.5.0-rc.1",
9+
"pulp": "^11.0.0",
10+
"purescript-psa": "^0.5.1",
1111
"rimraf": "^2.6.1"
1212
}
1313
}

src/Data/Enum.purs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ module Data.Enum
55
, enumFromTo
66
, enumFromThenTo
77
, upFrom
8+
, upFromIncluding
89
, downFrom
910
, Cardinality(..)
1011
, class BoundedEnum, cardinality, toEnum, fromEnum, toEnumWithDefaults
@@ -21,6 +22,7 @@ import Data.Char (fromCharCode, toCharCode)
2122
import Data.Either (Either(..))
2223
import Data.Maybe (Maybe(..), maybe, fromJust)
2324
import Data.Newtype (class Newtype, unwrap)
25+
import Data.NonEmpty (NonEmpty, (:|))
2426
import Data.Tuple (Tuple(..))
2527
import Data.Unfoldable (class Unfoldable, unfoldr)
2628

@@ -129,9 +131,16 @@ intStepFromTo step from to =
129131
diag :: forall a. a -> Tuple a a
130132
diag a = Tuple a a
131133

134+
-- | Results in all successors from given Enum in some unfoldable.
135+
-- | Note that given Enum is not included in the result.
132136
upFrom :: forall a u. Enum a => Unfoldable u => a -> u a
133137
upFrom = unfoldr (map diag <<< succ)
134138

139+
-- | Results in all successors of given Enum (including itself)
140+
-- | in some NonEmpty unfoldable.
141+
upFromIncluding :: a u. Enum a => Unfoldable u => a -> NonEmpty u a
142+
upFromIncluding x = x :| upFrom x
143+
135144
downFrom :: forall a u. Enum a => Unfoldable u => a -> u a
136145
downFrom = unfoldr (map diag <<< pred)
137146

test/Test/Data/Enum.purs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,10 @@ import Control.Monad.Eff.Console (CONSOLE, log)
77

88
import Data.Newtype (unwrap)
99
import Data.Enum (class Enum, class BoundedEnum, defaultToEnum, defaultFromEnum,
10-
defaultCardinality, enumFromTo, enumFromThenTo, upFrom,
10+
defaultCardinality, enumFromTo, enumFromThenTo, upFrom, upFromIncluding,
1111
downFrom, toEnum, fromEnum, Cardinality, cardinality)
1212
import Data.Maybe (Maybe(..))
13+
import Data.NonEmpty ((:|))
1314
import Data.Either (Either(..))
1415

1516
import Test.Assert (ASSERT, assert)
@@ -61,6 +62,11 @@ testEnum = do
6162
assert $ upFrom D == [ E]
6263
assert $ upFrom E == [ ]
6364

65+
log "upFromIncluding"
66+
assert $ upFromIncluding B == B :| [C, D, E]
67+
assert $ upFromIncluding D == D :| [ E]
68+
assert $ upFromIncluding E == E :| [ ]
69+
6470
log "downFrom"
6571
assert $ downFrom D == [C, B, A]
6672
assert $ downFrom B == [ A]
@@ -81,4 +87,3 @@ testEnum = do
8187
assert $ fromEnum (Left false :: Either Boolean T) == 0
8288
assert $ fromEnum (Left true :: Either Boolean T) == 1
8389
assert $ fromEnum (Right B :: Either Boolean T) == 3
84-

0 commit comments

Comments
 (0)