1
- import gleam/list
2
1
import gleam/dict . { type Dict }
2
+ import gleam/list
3
3
import gleam/result
4
4
5
- // A list is used as the map value as an empty list has the smallest
5
+ // A list is used as the dict value as an empty list has the smallest
6
6
// representation in Erlang's binary format
7
7
@ target ( erlang )
8
8
type Token =
@@ -24,7 +24,7 @@ const token = Nil
24
24
/// logarithmic time complexity.
25
25
///
26
26
pub opaque type Set ( member) {
27
- Set ( map : Dict ( member, Token ) )
27
+ Set ( dict : Dict ( member, Token ) )
28
28
}
29
29
30
30
/// Creates a new empty set.
@@ -48,7 +48,7 @@ pub fn new() -> Set(member) {
48
48
/// ```
49
49
///
50
50
pub fn size ( set : Set ( member) ) -> Int {
51
- dict . size ( set . map )
51
+ dict . size ( set . dict )
52
52
}
53
53
54
54
/// Inserts an member into the set.
@@ -66,7 +66,7 @@ pub fn size(set: Set(member)) -> Int {
66
66
/// ```
67
67
///
68
68
pub fn insert ( into set : Set ( member) , this member : member) -> Set ( member) {
69
- Set ( map : dict . insert ( set . map , member , token ) )
69
+ Set ( dict : dict . insert ( set . dict , member , token ) )
70
70
}
71
71
72
72
/// Checks whether a set contains a given member.
@@ -90,7 +90,7 @@ pub fn insert(into set: Set(member), this member: member) -> Set(member) {
90
90
/// ```
91
91
///
92
92
pub fn contains ( in set : Set ( member) , this member : member) -> Bool {
93
- set . map
93
+ set . dict
94
94
|> dict . get ( member )
95
95
|> result . is_ok
96
96
}
@@ -111,7 +111,7 @@ pub fn contains(in set: Set(member), this member: member) -> Bool {
111
111
/// ```
112
112
///
113
113
pub fn delete ( from set : Set ( member) , this member : member) -> Set ( member) {
114
- Set ( map : dict . delete ( set . map , member ) )
114
+ Set ( dict : dict . delete ( set . dict , member ) )
115
115
}
116
116
117
117
/// Converts the set into a list of the contained members.
@@ -129,7 +129,7 @@ pub fn delete(from set: Set(member), this member: member) -> Set(member) {
129
129
/// ```
130
130
///
131
131
pub fn to_list ( set : Set ( member) ) -> List ( member) {
132
- dict . keys ( set . map )
132
+ dict . keys ( set . dict )
133
133
}
134
134
135
135
/// Creates a new set of the members in a given list.
@@ -146,11 +146,11 @@ pub fn to_list(set: Set(member)) -> List(member) {
146
146
/// ```
147
147
///
148
148
pub fn from_list ( members : List ( member) ) -> Set ( member) {
149
- let map =
149
+ let dict =
150
150
list . fold ( over : members , from : dict . new ( ) , with : fn ( m , k ) {
151
151
dict . insert ( m , k , token )
152
152
} )
153
- Set ( map )
153
+ Set ( dict )
154
154
}
155
155
156
156
/// Combines all entries into a single value by calling a given function on each
@@ -173,7 +173,7 @@ pub fn fold(
173
173
from initial : acc,
174
174
with reducer : fn ( acc, member) -> acc,
175
175
) -> acc {
176
- dict . fold ( over : set . map , from : initial , with : fn ( a , k , _ ) { reducer ( a , k ) } )
176
+ dict . fold ( over : set . dict , from : initial , with : fn ( a , k , _ ) { reducer ( a , k ) } )
177
177
}
178
178
179
179
/// Creates a new set from an existing set, minus any members that a given
@@ -195,14 +195,14 @@ pub fn filter(
195
195
in set : Set ( member) ,
196
196
keeping predicate : fn ( member) -> Bool ,
197
197
) -> Set ( member) {
198
- Set ( dict . filter ( in : set . map , keeping : fn ( m , _ ) { predicate ( m ) } ) )
198
+ Set ( dict . filter ( in : set . dict , keeping : fn ( m , _ ) { predicate ( m ) } ) )
199
199
}
200
200
201
201
pub fn drop ( from set : Set ( member) , drop disallowed : List ( member) ) -> Set ( member) {
202
202
list . fold ( over : disallowed , from : set , with : delete )
203
203
}
204
204
205
- /// Creates a new map from a given map , only including any members which are in
205
+ /// Creates a new set from a given set , only including any members which are in
206
206
/// a given list.
207
207
///
208
208
/// This function runs in loglinear time.
@@ -217,11 +217,11 @@ pub fn drop(from set: Set(member), drop disallowed: List(member)) -> Set(member)
217
217
/// ```
218
218
///
219
219
pub fn take ( from set : Set ( member) , keeping desired : List ( member) ) -> Set ( member) {
220
- Set ( dict . take ( from : set . map , keeping : desired ) )
220
+ Set ( dict . take ( from : set . dict , keeping : desired ) )
221
221
}
222
222
223
223
fn order ( first : Set ( member) , second : Set ( member) ) -> # ( Set ( member) , Set ( member) ) {
224
- case dict . size ( first . map ) > dict . size ( second . map ) {
224
+ case dict . size ( first . dict ) > dict . size ( second . dict ) {
225
225
True -> # ( first , second )
226
226
False -> # ( second , first )
227
227
}
0 commit comments