Skip to content

Commit 29a7123

Browse files
authored
Merge pull request #2 from LiamGoodacre/feature/compare-append-symbol
Add CompareSymbol and AppendSymbol
2 parents 075a287 + 04ae4af commit 29a7123

File tree

2 files changed

+32
-2
lines changed

2 files changed

+32
-2
lines changed

src/Type/Data/Symbol.purs

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
module Type.Data.Symbol
2+
( module Data.Symbol
3+
, class CompareSymbol
4+
, compareSymbol
5+
, class AppendSymbol
6+
, appendSymbol
7+
) where
8+
9+
import Data.Symbol (SProxy(..), class IsSymbol, reflectSymbol, reifySymbol)
10+
import Type.Data.Ordering (OProxy(..), kind Ordering)
11+
12+
-- | Compare two `Symbol` types
13+
class CompareSymbol (lhs :: Symbol)
14+
(rhs :: Symbol)
15+
(out :: Ordering) |
16+
lhs rhs -> out
17+
18+
compareSymbol :: forall l r o. CompareSymbol l r o => SProxy l -> SProxy r -> OProxy o
19+
compareSymbol _ _ = OProxy
20+
21+
22+
-- | Append two `Symbol` types together
23+
class AppendSymbol (lhs :: Symbol)
24+
(rhs :: Symbol)
25+
(out :: Symbol) |
26+
lhs rhs -> out
27+
28+
appendSymbol :: forall l r o. AppendSymbol l r o => SProxy l -> SProxy r -> SProxy o
29+
appendSymbol _ _ = SProxy
30+

src/Type/Prelude.purs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@ module Type.Prelude
22
( module Type.Equality
33
, module Type.Data.Ordering
44
, module Type.Proxy
5-
, module Data.Symbol
5+
, module Type.Data.Symbol
66
) where
77

88
import Type.Equality (class TypeEquals, from, to)
99
import Type.Data.Ordering (kind Ordering, LT, EQ, GT, OProxy(..), class IsOrdering, reflectOrdering, reifyOrdering)
1010
import Type.Proxy (Proxy(..))
11-
import Data.Symbol (SProxy(..), class IsSymbol, reflectSymbol, reifySymbol)
11+
import Type.Data.Symbol (SProxy(..), class IsSymbol, reflectSymbol, reifySymbol, class CompareSymbol, compareSymbol, class AppendSymbol, appendSymbol)

0 commit comments

Comments
 (0)