Helpers to work with composite keys.
It is difficult to work with composite keys in Elm due to various limitations:
This library resolves those issues by introducing type aliases for keys of various element sizes. All these types are generic to let developers to create their custom types to be comparable and they all have utility functions to compose them. Here's an example:
type alias MyEntity =
{ foo : String
, bar : Int
, baz : Float
}
-- myKey : Key3 Int String Float
myKey =
key3 .bar .foo .baz
Note: This file was generated using Elm code that is included as a comment at the end of the source code for this module. You can use that code to extend this module without too much manual work.
noKey : a -> Key0
Creates a key with zero elements.
key0 : a -> Key0
Creates a key with zero elements.
key2 : (a -> b1) -> (a -> b2) -> a -> Key2 b1 b2
Create a composite key with 2 elements.
key3 : (a -> b1) -> (a -> b2) -> (a -> b3) -> a -> Key3 b1 b2 b3
Create a composite key with 3 elements.
key4 : (a -> b1) -> (a -> b2) -> (a -> b3) -> (a -> b4) -> a -> Key4 b1 b2 b3 b4
Create a composite key with 4 elements.
key5 : (a -> b1) -> (a -> b2) -> (a -> b3) -> (a -> b4) -> (a -> b5) -> a -> Key5 b1 b2 b3 b4 b5
Create a composite key with 5 elements.
key6 : (a -> b1) -> (a -> b2) -> (a -> b3) -> (a -> b4) -> (a -> b5) -> (a -> b6) -> a -> Key6 b1 b2 b3 b4 b5 b6
Create a composite key with 6 elements.
key7 : (a -> b1) -> (a -> b2) -> (a -> b3) -> (a -> b4) -> (a -> b5) -> (a -> b6) -> (a -> b7) -> a -> Key7 b1 b2 b3 b4 b5 b6 b7
Create a composite key with 7 elements.
key8 : (a -> b1) -> (a -> b2) -> (a -> b3) -> (a -> b4) -> (a -> b5) -> (a -> b6) -> (a -> b7) -> (a -> b8) -> a -> Key8 b1 b2 b3 b4 b5 b6 b7 b8
Create a composite key with 8 elements.
key9 : (a -> b1) -> (a -> b2) -> (a -> b3) -> (a -> b4) -> (a -> b5) -> (a -> b6) -> (a -> b7) -> (a -> b8) -> (a -> b9) -> a -> Key9 b1 b2 b3 b4 b5 b6 b7 b8 b9
Create a composite key with 9 elements.
key10 : (a -> b1) -> (a -> b2) -> (a -> b3) -> (a -> b4) -> (a -> b5) -> (a -> b6) -> (a -> b7) -> (a -> b8) -> (a -> b9) -> (a -> b10) -> a -> Key10 b1 b2 b3 b4 b5 b6 b7 b8 b9 b10
Create a composite key with 10 elements.
key11 : (a -> b1) -> (a -> b2) -> (a -> b3) -> (a -> b4) -> (a -> b5) -> (a -> b6) -> (a -> b7) -> (a -> b8) -> (a -> b9) -> (a -> b10) -> (a -> b11) -> a -> Key11 b1 b2 b3 b4 b5 b6 b7 b8 b9 b10 b11
Create a composite key with 11 elements.
key12 : (a -> b1) -> (a -> b2) -> (a -> b3) -> (a -> b4) -> (a -> b5) -> (a -> b6) -> (a -> b7) -> (a -> b8) -> (a -> b9) -> (a -> b10) -> (a -> b11) -> (a -> b12) -> a -> Key12 b1 b2 b3 b4 b5 b6 b7 b8 b9 b10 b11 b12
Create a composite key with 12 elements.
key13 : (a -> b1) -> (a -> b2) -> (a -> b3) -> (a -> b4) -> (a -> b5) -> (a -> b6) -> (a -> b7) -> (a -> b8) -> (a -> b9) -> (a -> b10) -> (a -> b11) -> (a -> b12) -> (a -> b13) -> a -> Key13 b1 b2 b3 b4 b5 b6 b7 b8 b9 b10 b11 b12 b13
Create a composite key with 13 elements.
key14 : (a -> b1) -> (a -> b2) -> (a -> b3) -> (a -> b4) -> (a -> b5) -> (a -> b6) -> (a -> b7) -> (a -> b8) -> (a -> b9) -> (a -> b10) -> (a -> b11) -> (a -> b12) -> (a -> b13) -> (a -> b14) -> a -> Key14 b1 b2 b3 b4 b5 b6 b7 b8 b9 b10 b11 b12 b13 b14
Create a composite key with 14 elements.
key15 : (a -> b1) -> (a -> b2) -> (a -> b3) -> (a -> b4) -> (a -> b5) -> (a -> b6) -> (a -> b7) -> (a -> b8) -> (a -> b9) -> (a -> b10) -> (a -> b11) -> (a -> b12) -> (a -> b13) -> (a -> b14) -> (a -> b15) -> a -> Key15 b1 b2 b3 b4 b5 b6 b7 b8 b9 b10 b11 b12 b13 b14 b15
Create a composite key with 15 elements.
key16 : (a -> b1) -> (a -> b2) -> (a -> b3) -> (a -> b4) -> (a -> b5) -> (a -> b6) -> (a -> b7) -> (a -> b8) -> (a -> b9) -> (a -> b10) -> (a -> b11) -> (a -> b12) -> (a -> b13) -> (a -> b14) -> (a -> b15) -> (a -> b16) -> a -> Key16 b1 b2 b3 b4 b5 b6 b7 b8 b9 b10 b11 b12 b13 b14 b15 b16
Create a composite key with 16 elements.
Basics.Int
Type that represents a zero element key. The ideal representation would be ()
but Unit
is not comparable in Elm.
So we use Int
to retain comparable semantics but only 0
should be used as a value.
key0
and noKey
can be used to create a Key0
value.
( k1, k2 )
Type that represents a composite key with 2 elements.
( k1, k2, k3 )
Type that represents a composite key with 3 elements.
( k1, k2, ( k3, k4 ) )
Type that represents a composite key with 4 elements.
( k1, k2, ( k3, k4, k5 ) )
Type that represents a composite key with 5 elements.
( k1, k2, ( k3, k4, ( k5, k6 ) ) )
Type that represents a composite key with 6 elements.
( k1, k2, ( k3, k4, ( k5, k6, k7 ) ) )
Type that represents a composite key with 7 elements.
( k1
, k2
, ( k3
, k4
, ( k5
, k6
, ( k7
, k8 ) ) )
)
Type that represents a composite key with 8 elements.
( k1
, k2
, ( k3
, k4
, ( k5
, k6
, ( k7
, k8
, k9 ) ) )
)
Type that represents a composite key with 9 elements.
( k1
, k2
, ( k3
, k4
, ( k5
, k6
, ( k7
, k8
, ( k9
, k10 ) ) ) )
)
Type that represents a composite key with 10 elements.
( k1
, k2
, ( k3
, k4
, ( k5
, k6
, ( k7
, k8
, ( k9
, k10
, k11 ) ) ) )
)
Type that represents a composite key with 11 elements.
( k1
, k2
, ( k3
, k4
, ( k5
, k6
, ( k7
, k8
, ( k9
, k10
, ( k11
, k12 ) ) ) ) )
)
Type that represents a composite key with 12 elements.
( k1
, k2
, ( k3
, k4
, ( k5
, k6
, ( k7
, k8
, ( k9
, k10
, ( k11
, k12
, k13 ) ) ) ) )
)
Type that represents a composite key with 13 elements.
( k1
, k2
, ( k3
, k4
, ( k5
, k6
, ( k7
, k8
, ( k9
, k10
, ( k11
, k12
, ( k13
, k14 ) ) ) ) ) )
)
Type that represents a composite key with 14 elements.
( k1
, k2
, ( k3
, k4
, ( k5
, k6
, ( k7
, k8
, ( k9
, k10
, ( k11
, k12
, ( k13
, k14
, k15 ) ) ) ) ) )
)
Type that represents a composite key with 15 elements.
( k1
, k2
, ( k3
, k4
, ( k5
, k6
, ( k7
, k8
, ( k9
, k10
, ( k11
, k12
, ( k13
, k14
, ( k15
, k16 ) ) ) ) ) ) )
)
Type that represents a composite key with 16 elements.