Skip to content

Commit

Permalink
Deprecate constant, compose
Browse files Browse the repository at this point in the history
  • Loading branch information
lpil committed Feb 22, 2024
1 parent f36ef4d commit 6a701d1
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 40 deletions.
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
# Changelog

## Unreleased

- The `compose` and `constant` functions in the `function` module have been
deprecated in favour of the `fn` literal syntax.

## v0.35.1 - 2024-02-15

- Fixed a warning on the JavaScript target.
Expand Down
8 changes: 2 additions & 6 deletions src/gleam/function.gleam
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
/// Takes two functions and chains them together to form one function that
/// takes the input from the first and returns the output of the second.
///
@deprecated("Use a fn literal instead, it is easier to understand")
pub fn compose(fun1: fn(a) -> b, fun2: fn(b) -> c) -> fn(a) -> c {
fn(a) { fun2(fun1(a)) }
}
Expand Down Expand Up @@ -103,9 +101,7 @@ pub fn identity(x: a) -> a {
x
}

/// Takes a single argument and returns a new function that
/// ignores its argument and always returns the input value.
///
@deprecated("Use a fn literal instead, it is easier to understand")
pub fn constant(value: a) -> fn(b) -> a {
fn(_) { value }
}
Expand Down
34 changes: 0 additions & 34 deletions test/gleam/function_test.gleam
Original file line number Diff line number Diff line change
@@ -1,37 +1,9 @@
import gleam/function
import gleam/int
import gleam/list
import gleam/pair
import gleam/result
import gleam/should
import gleam/string

pub fn compose_test() {
let add_two = fn(int: Int) { int + 2 }
let add_three = fn(int: Int) { int + 3 }

let add_five = function.compose(add_two, add_three)

1
|> add_five
|> should.equal(6)

// Takes a list of ints and returns the first as a string (if there is one, or
// else "0" if there is not)
let first_to_string =
list.first
|> function.compose(result.unwrap(_, 0))
|> function.compose(int.to_string)

[1]
|> first_to_string
|> should.equal("1")

[]
|> first_to_string
|> should.equal("0")
}

pub fn curry2_test() {
let fun = fn(a, b) { a + b }
let curried = function.curry2(fun)
Expand Down Expand Up @@ -108,12 +80,6 @@ pub fn identity_test() {
|> should.equal(#(1, 2.0))
}

pub fn constant_test() {
#(1, 2)
|> pair.map_first(function.constant(42))
|> should.equal(#(42, 2))
}

pub fn tap_test() {
"Thanks Joe & Louis"
|> function.tap(fn(s: String) {
Expand Down

0 comments on commit 6a701d1

Please sign in to comment.