Skip to content

Commit 8635789

Browse files
committed
Deprecate gleam/iterator
1 parent dfd1516 commit 8635789

File tree

3 files changed

+51
-2
lines changed

3 files changed

+51
-2
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
- The `gleam/queue` module has been deprecated in favour of the `gleam_deque`
66
package.
7+
- The `gleam/iterator` module has been deprecated in favour of the
8+
`gleam_yielder` package.
79

810
## v0.43.0 - 2024-11-17
911

src/gleam/iterator.gleam

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,13 @@ type Action(element) {
2323
/// applied to the stream. Once the stream has all the required transformations
2424
/// applied it can be evaluated using functions such as `fold` and `to_list`.
2525
///
26+
@deprecated("Please use the gleam_yielder package instead")
2627
pub opaque type Iterator(element) {
2728
Iterator(continuation: fn() -> Action(element))
2829
}
2930

3031
// Public API for iteration
32+
@deprecated("Please use the gleam_yielder package instead")
3133
pub type Step(element, accumulator) {
3234
Next(element: element, accumulator: accumulator)
3335
Done
@@ -59,6 +61,7 @@ fn stop() -> Action(element) {
5961
/// // -> [5, 4, 3, 2, 1]
6062
/// ```
6163
///
64+
@deprecated("Please use the gleam_yielder package instead")
6265
pub fn unfold(
6366
from initial: acc,
6467
with f: fn(acc) -> Step(element, acc),
@@ -91,6 +94,7 @@ fn unfold_loop(
9194
/// // -> [7, 7, 7]
9295
/// ```
9396
///
97+
@deprecated("Please use the gleam_yielder package instead")
9498
pub fn repeatedly(f: fn() -> element) -> Iterator(element) {
9599
unfold(Nil, fn(_) { Next(f(), Nil) })
96100
}
@@ -106,6 +110,7 @@ pub fn repeatedly(f: fn() -> element) -> Iterator(element) {
106110
/// // -> [10, 10, 10, 10]
107111
/// ```
108112
///
113+
@deprecated("Please use the gleam_yielder package instead")
109114
pub fn repeat(x: element) -> Iterator(element) {
110115
repeatedly(fn() { x })
111116
}
@@ -120,6 +125,7 @@ pub fn repeat(x: element) -> Iterator(element) {
120125
/// // -> [1, 2, 3, 4]
121126
/// ```
122127
///
128+
@deprecated("Please use the gleam_yielder package instead")
123129
pub fn from_list(list: List(element)) -> Iterator(element) {
124130
let yield = fn(acc) {
125131
case acc {
@@ -166,6 +172,7 @@ fn transform_loop(
166172
/// // -> [#(0, "a"), #(1, "b"), #(2, "c")]
167173
/// ```
168174
///
175+
@deprecated("Please use the gleam_yielder package instead")
169176
pub fn transform(
170177
over iterator: Iterator(a),
171178
from initial: acc,
@@ -192,6 +199,7 @@ pub fn transform(
192199
/// // -> 10
193200
/// ```
194201
///
202+
@deprecated("Please use the gleam_yielder package instead")
195203
pub fn fold(
196204
over iterator: Iterator(e),
197205
from initial: acc,
@@ -217,6 +225,7 @@ fn fold_loop(
217225
/// you wish to trigger any side effects that would occur when evaluating
218226
/// the iterator.
219227
///
228+
@deprecated("Please use the gleam_yielder package instead")
220229
pub fn run(iterator: Iterator(e)) -> Nil {
221230
fold(iterator, Nil, fn(_, _) { Nil })
222231
}
@@ -235,6 +244,7 @@ pub fn run(iterator: Iterator(e)) -> Nil {
235244
/// // -> [2, 4, 6]
236245
/// ```
237246
///
247+
@deprecated("Please use the gleam_yielder package instead")
238248
pub fn to_list(iterator: Iterator(element)) -> List(element) {
239249
iterator
240250
|> fold([], fn(acc, e) { [e, ..acc] })
@@ -263,6 +273,7 @@ pub fn to_list(iterator: Iterator(element)) -> List(element) {
263273
/// // -> Done
264274
/// ```
265275
///
276+
@deprecated("Please use the gleam_yielder package instead")
266277
pub fn step(iterator: Iterator(e)) -> Step(e, Iterator(e)) {
267278
case iterator.continuation() {
268279
Stop -> Done
@@ -290,6 +301,7 @@ pub fn step(iterator: Iterator(e)) -> Step(e, Iterator(e)) {
290301
/// // -> [1, 2]
291302
/// ```
292303
///
304+
@deprecated("Please use the gleam_yielder package instead")
293305
pub fn take(from iterator: Iterator(e), up_to desired: Int) -> Iterator(e) {
294306
iterator.continuation
295307
|> take_loop(desired)
@@ -334,6 +346,7 @@ fn take_loop(continuation: fn() -> Action(e), desired: Int) -> fn() -> Action(e)
334346
/// // -> []
335347
/// ```
336348
///
349+
@deprecated("Please use the gleam_yielder package instead")
337350
pub fn drop(from iterator: Iterator(e), up_to desired: Int) -> Iterator(e) {
338351
fn() { drop_loop(iterator.continuation, desired) }
339352
|> Iterator
@@ -367,6 +380,7 @@ fn drop_loop(continuation: fn() -> Action(e), desired: Int) -> Action(e) {
367380
/// // -> [2, 4, 6]
368381
/// ```
369382
///
383+
@deprecated("Please use the gleam_yielder package instead")
370384
pub fn map(over iterator: Iterator(a), with f: fn(a) -> b) -> Iterator(b) {
371385
iterator.continuation
372386
|> map_loop(f)
@@ -405,6 +419,7 @@ fn map_loop(continuation: fn() -> Action(a), f: fn(a) -> b) -> fn() -> Action(b)
405419
/// // -> [#(1, "a"), #(2, "b")]
406420
/// ```
407421
///
422+
@deprecated("Please use the gleam_yielder package instead")
408423
pub fn map2(
409424
iterator1: Iterator(a),
410425
iterator2: Iterator(b),
@@ -446,6 +461,7 @@ fn map2_loop(
446461
/// // -> [1, 2, 3, 4]
447462
/// ```
448463
///
464+
@deprecated("Please use the gleam_yielder package instead")
449465
pub fn append(to first: Iterator(a), suffix second: Iterator(a)) -> Iterator(a) {
450466
fn() { append_loop(first.continuation, second.continuation) }
451467
|> Iterator
@@ -473,6 +489,7 @@ fn append_loop(first: fn() -> Action(a), second: fn() -> Action(a)) -> Action(a)
473489
/// // -> [1, 2, 3, 4]
474490
/// ```
475491
///
492+
@deprecated("Please use the gleam_yielder package instead")
476493
pub fn flatten(iterator: Iterator(Iterator(a))) -> Iterator(a) {
477494
fn() { flatten_loop(iterator.continuation) }
478495
|> Iterator
@@ -501,6 +518,7 @@ fn flatten_loop(flattened: fn() -> Action(Iterator(a))) -> Action(a) {
501518
/// // -> [1, 2, 3, 4]
502519
/// ```
503520
///
521+
@deprecated("Please use the gleam_yielder package instead")
504522
pub fn concat(iterators: List(Iterator(a))) -> Iterator(a) {
505523
flatten(from_list(iterators))
506524
}
@@ -523,6 +541,7 @@ pub fn concat(iterators: List(Iterator(a))) -> Iterator(a) {
523541
/// // -> [1, 2, 2, 3]
524542
/// ```
525543
///
544+
@deprecated("Please use the gleam_yielder package instead")
526545
pub fn flat_map(
527546
over iterator: Iterator(a),
528547
with f: fn(a) -> Iterator(b),
@@ -551,6 +570,7 @@ pub fn flat_map(
551570
/// // -> [2, 4]
552571
/// ```
553572
///
573+
@deprecated("Please use the gleam_yielder package instead")
554574
pub fn filter(
555575
iterator: Iterator(a),
556576
keeping predicate: fn(a) -> Bool,
@@ -629,6 +649,7 @@ fn filter_map_loop(
629649
/// // -> [1, 2, 1, 2, 1, 2]
630650
/// ```
631651
///
652+
@deprecated("Please use the gleam_yielder package instead")
632653
pub fn cycle(iterator: Iterator(a)) -> Iterator(a) {
633654
repeat(iterator)
634655
|> flatten
@@ -654,6 +675,7 @@ pub fn cycle(iterator: Iterator(a)) -> Iterator(a) {
654675
/// // -> [0]
655676
/// ```
656677
///
678+
@deprecated("Please use the gleam_yielder package instead")
657679
pub fn range(from start: Int, to stop: Int) -> Iterator(Int) {
658680
case int.compare(start, stop) {
659681
order.Eq -> once(fn() { start })
@@ -698,6 +720,7 @@ pub fn range(from start: Int, to stop: Int) -> Iterator(Int) {
698720
/// // -> Error(Nil)
699721
/// ```
700722
///
723+
@deprecated("Please use the gleam_yielder package instead")
701724
pub fn find(
702725
in haystack: Iterator(a),
703726
one_that is_desired: fn(a) -> Bool,
@@ -743,6 +766,7 @@ fn find_loop(
743766
/// // -> Error(Nil)
744767
/// ```
745768
///
769+
@deprecated("Please use the gleam_yielder package instead")
746770
pub fn find_map(
747771
in haystack: Iterator(a),
748772
one_that is_desired: fn(a) -> Result(b, c),
@@ -774,6 +798,7 @@ fn find_map_loop(
774798
/// // -> [#("a", 0), #("b", 1), #("c", 2)]
775799
/// ```
776800
///
801+
@deprecated("Please use the gleam_yielder package instead")
777802
pub fn index(over iterator: Iterator(element)) -> Iterator(#(element, Int)) {
778803
iterator.continuation
779804
|> index_loop(0)
@@ -802,6 +827,7 @@ fn index_loop(
802827
/// // -> [1, 3, 9, 27, 81]
803828
/// ```
804829
///
830+
@deprecated("Please use the gleam_yielder package instead")
805831
pub fn iterate(
806832
from initial: element,
807833
with f: fn(element) -> element,
@@ -820,6 +846,7 @@ pub fn iterate(
820846
/// // -> [1, 2]
821847
/// ```
822848
///
849+
@deprecated("Please use the gleam_yielder package instead")
823850
pub fn take_while(
824851
in iterator: Iterator(element),
825852
satisfying predicate: fn(element) -> Bool,
@@ -857,6 +884,7 @@ fn take_while_loop(
857884
/// // -> [4, 2, 5]
858885
/// ```
859886
///
887+
@deprecated("Please use the gleam_yielder package instead")
860888
pub fn drop_while(
861889
in iterator: Iterator(element),
862890
satisfying predicate: fn(element) -> Bool,
@@ -893,6 +921,7 @@ fn drop_while_loop(
893921
/// // -> [1, 3, 6, 10, 15]
894922
/// ```
895923
///
924+
@deprecated("Please use the gleam_yielder package instead")
896925
pub fn scan(
897926
over iterator: Iterator(element),
898927
from initial: acc,
@@ -931,6 +960,7 @@ fn scan_loop(
931960
/// // -> [#("a", 20), #("b", 21), #("c", 22)]
932961
/// ```
933962
///
963+
@deprecated("Please use the gleam_yielder package instead")
934964
pub fn zip(left: Iterator(a), right: Iterator(b)) -> Iterator(#(a, b)) {
935965
zip_loop(left.continuation, right.continuation)
936966
|> Iterator
@@ -971,6 +1001,7 @@ type Chunk(element, key) {
9711001
/// // -> [[1], [2, 2], [3], [4, 4, 6], [7, 7]]
9721002
/// ```
9731003
///
1004+
@deprecated("Please use the gleam_yielder package instead")
9741005
pub fn chunk(
9751006
over iterator: Iterator(element),
9761007
by f: fn(element) -> key,
@@ -1038,6 +1069,7 @@ fn next_chunk(
10381069
/// // -> [[1, 2, 3], [4, 5, 6], [7, 8]]
10391070
/// ```
10401071
///
1072+
@deprecated("Please use the gleam_yielder package instead")
10411073
pub fn sized_chunk(
10421074
over iterator: Iterator(element),
10431075
into count: Int,
@@ -1115,6 +1147,7 @@ fn next_sized_chunk(
11151147
/// // -> [1, 0, 2, 0, 3, 0, 4, 0, 5]
11161148
/// ```
11171149
///
1150+
@deprecated("Please use the gleam_yielder package instead")
11181151
pub fn intersperse(
11191152
over iterator: Iterator(element),
11201153
with elem: element,
@@ -1168,6 +1201,7 @@ fn intersperse_loop(
11681201
/// // -> False
11691202
/// ```
11701203
///
1204+
@deprecated("Please use the gleam_yielder package instead")
11711205
pub fn any(
11721206
in iterator: Iterator(element),
11731207
satisfying predicate: fn(element) -> Bool,
@@ -1217,6 +1251,7 @@ fn any_loop(
12171251
/// // -> False
12181252
/// ```
12191253
///
1254+
@deprecated("Please use the gleam_yielder package instead")
12201255
pub fn all(
12211256
in iterator: Iterator(element),
12221257
satisfying predicate: fn(element) -> Bool,
@@ -1252,6 +1287,7 @@ fn all_loop(
12521287
/// // -> dict.from_list([#(0, [3, 6]), #(1, [1, 4]), #(2, [2, 5])])
12531288
/// ```
12541289
///
1290+
@deprecated("Please use the gleam_yielder package instead")
12551291
pub fn group(
12561292
in iterator: Iterator(element),
12571293
by key: fn(element) -> key,
@@ -1300,6 +1336,7 @@ fn update_group_with(el: element) -> fn(Option(List(element))) -> List(element)
13001336
/// // -> Ok(15)
13011337
/// ```
13021338
///
1339+
@deprecated("Please use the gleam_yielder package instead")
13031340
pub fn reduce(
13041341
over iterator: Iterator(e),
13051342
with f: fn(e, e) -> e,
@@ -1330,6 +1367,7 @@ pub fn reduce(
13301367
/// // -> Ok(10)
13311368
/// ```
13321369
///
1370+
@deprecated("Please use the gleam_yielder package instead")
13331371
pub fn last(iterator: Iterator(element)) -> Result(element, Nil) {
13341372
iterator
13351373
|> reduce(fn(_, elem) { elem })
@@ -1344,6 +1382,7 @@ pub fn last(iterator: Iterator(element)) -> Result(element, Nil) {
13441382
/// // -> []
13451383
/// ```
13461384
///
1385+
@deprecated("Please use the gleam_yielder package instead")
13471386
pub fn empty() -> Iterator(element) {
13481387
Iterator(stop)
13491388
}
@@ -1357,6 +1396,7 @@ pub fn empty() -> Iterator(element) {
13571396
/// // -> [1]
13581397
/// ```
13591398
///
1399+
@deprecated("Please use the gleam_yielder package instead")
13601400
pub fn once(f: fn() -> element) -> Iterator(element) {
13611401
fn() { Continue(f(), stop) }
13621402
|> Iterator
@@ -1371,6 +1411,7 @@ pub fn once(f: fn() -> element) -> Iterator(element) {
13711411
/// // -> [1]
13721412
/// ```
13731413
///
1414+
@deprecated("Please use the gleam_yielder package instead")
13741415
pub fn single(elem: element) -> Iterator(element) {
13751416
once(fn() { elem })
13761417
}
@@ -1394,6 +1435,7 @@ pub fn single(elem: element) -> Iterator(element) {
13941435
/// // -> [1, 100, 2, 3, 4]
13951436
/// ```
13961437
///
1438+
@deprecated("Please use the gleam_yielder package instead")
13971439
pub fn interleave(
13981440
left: Iterator(element),
13991441
with right: Iterator(element),
@@ -1437,6 +1479,7 @@ fn interleave_loop(
14371479
/// // -> 6
14381480
/// ```
14391481
///
1482+
@deprecated("Please use the gleam_yielder package instead")
14401483
pub fn fold_until(
14411484
over iterator: Iterator(e),
14421485
from initial: acc,
@@ -1480,6 +1523,7 @@ fn fold_until_loop(
14801523
/// // -> Error(Nil)
14811524
/// ```
14821525
///
1526+
@deprecated("Please use the gleam_yielder package instead")
14831527
pub fn try_fold(
14841528
over iterator: Iterator(e),
14851529
from initial: acc,
@@ -1519,6 +1563,7 @@ fn try_fold_loop(
15191563
/// empty() |> first
15201564
/// // -> Error(Nil)
15211565
/// ```
1566+
@deprecated("Please use the gleam_yielder package instead")
15221567
pub fn first(from iterator: Iterator(e)) -> Result(e, Nil) {
15231568
case iterator.continuation() {
15241569
Stop -> Error(Nil)
@@ -1549,6 +1594,7 @@ pub fn first(from iterator: Iterator(e)) -> Result(e, Nil) {
15491594
/// // -> Error(Nil)
15501595
/// ```
15511596
///
1597+
@deprecated("Please use the gleam_yielder package instead")
15521598
pub fn at(in iterator: Iterator(e), get index: Int) -> Result(e, Nil) {
15531599
iterator
15541600
|> drop(index)
@@ -1572,6 +1618,7 @@ pub fn at(in iterator: Iterator(e), get index: Int) -> Result(e, Nil) {
15721618
/// // -> 4
15731619
/// ```
15741620
///
1621+
@deprecated("Please use the gleam_yielder package instead")
15751622
pub fn length(over iterator: Iterator(e)) -> Int {
15761623
iterator.continuation
15771624
|> length_loop(0)
@@ -1601,6 +1648,7 @@ fn length_loop(over continuation: fn() -> Action(e), with length: Int) -> Int {
16011648
/// // Louis
16021649
/// ```
16031650
///
1651+
@deprecated("Please use the gleam_yielder package instead")
16041652
pub fn each(over iterator: Iterator(a), with f: fn(a) -> b) -> Nil {
16051653
iterator
16061654
|> map(f)
@@ -1626,6 +1674,7 @@ pub fn each(over iterator: Iterator(a), with f: fn(a) -> b) -> Nil {
16261674
/// // -> [1, 2, 3]
16271675
/// ```
16281676
///
1677+
@deprecated("Please use the gleam_yielder package instead")
16291678
pub fn yield(element: a, next: fn() -> Iterator(a)) -> Iterator(a) {
16301679
Iterator(fn() { Continue(element, fn() { next().continuation() }) })
16311680
}

0 commit comments

Comments
 (0)