aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/gleam/function.gleam7
-rw-r--r--test/gleam/function_test.gleam7
2 files changed, 14 insertions, 0 deletions
diff --git a/src/gleam/function.gleam b/src/gleam/function.gleam
index a6d2063..5aebb76 100644
--- a/src/gleam/function.gleam
+++ b/src/gleam/function.gleam
@@ -51,3 +51,10 @@ pub fn flip(fun: fn(a, b) -> c) -> fn(b, a) -> c {
pub fn identity(x: a) -> a {
x
}
+
+/// A function that takes a single argument and returns a new function that
+/// ignores its argument and always returns the input value.
+///
+pub fn constant(value: a) -> fn(b) -> a {
+ fn(_) { value }
+}
diff --git a/test/gleam/function_test.gleam b/test/gleam/function_test.gleam
index e86beb3..1495d2a 100644
--- a/test/gleam/function_test.gleam
+++ b/test/gleam/function_test.gleam
@@ -2,6 +2,7 @@ import gleam/should
import gleam/dynamic
import gleam/function
import gleam/int
+import gleam/pair
import gleam/list
import gleam/result
import gleam/string
@@ -107,3 +108,9 @@ pub fn identity_test() {
|> function.identity
|> should.equal(#(1, 2.0))
}
+
+pub fn always_test() {
+ #(1, 2)
+ |> pair.map_first(function.constant(42))
+ |> should.equal(#(42, 2))
+}