Skip to content

Commit

Permalink
Deprecate yielder.prepend
Browse files Browse the repository at this point in the history
  • Loading branch information
JosephTLyons committed Dec 12, 2024
1 parent 2134616 commit 6210b92
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 2 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Changelog

- Deprecated `yielder.prepend` function. Use `yielder.push_front` instead.

## v1.1.0 - 2024-11-29

- Added `yielder.prepend` function.
Expand Down
21 changes: 19 additions & 2 deletions src/gleam/yielder.gleam
Original file line number Diff line number Diff line change
Expand Up @@ -1609,8 +1609,8 @@ pub fn each(over yielder: Yielder(a), with f: fn(a) -> b) -> Nil {
/// This function is for use with `use` expressions, to replicate the behaviour
/// of the `yield` keyword found in other languages.
///
/// If you only need to prepend an element and don't require the `use` syntax,
/// use `prepend`.
/// If you only need to add an element to the beginning of a yielder and don't
/// require the `use` syntax, use `push_front`.
///
/// ## Examples
///
Expand Down Expand Up @@ -1641,7 +1641,24 @@ pub fn yield(element: a, next: fn() -> Yielder(a)) -> Yielder(a) {
/// // -> [0, 1, 2, 3]
/// ```
///
@deprecated("Use `yielder.push_front` instead.")
pub fn prepend(yielder: Yielder(a), element: a) -> Yielder(a) {
use <- yield(element)
yielder
}

/// Add a new element to the start of a yielder.
///
/// ## Examples
///
/// ```gleam
/// let yielder = from_list([1, 2, 3]) |> push_front(0)
///
/// yielder.to_list
/// // -> [0, 1, 2, 3]
/// ```
///
pub fn push_front(yielder: Yielder(a), element: a) -> Yielder(a) {
use <- yield(element)
yielder
}
7 changes: 7 additions & 0 deletions test/gleam_yielder_test.gleam
Original file line number Diff line number Diff line change
Expand Up @@ -742,3 +742,10 @@ pub fn prepend_test() {
|> yielder.to_list
|> should.equal([0, 1, 2, 3])
}

pub fn push_front_test() {
yielder.from_list([1, 2, 3])
|> yielder.push_front(0)
|> yielder.to_list
|> should.equal([0, 1, 2, 3])
}

0 comments on commit 6210b92

Please sign in to comment.