aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRJ Dellecese <rjdellecese@gmail.com>2019-12-28 21:29:11 -0500
committerLouis Pilfold <louis@lpil.uk>2019-12-30 22:36:04 +0000
commit9292225d996c2092647fae15726a9f9bb2a691c8 (patch)
tree3e2b4edfcbe34c54eb279cd59924e9fc0ce13590 /src
parenta37c8fcf7b8ed522bc7c23dc25c3a804f7728adb (diff)
downloadgleam_stdlib-9292225d996c2092647fae15726a9f9bb2a691c8.tar.gz
gleam_stdlib-9292225d996c2092647fae15726a9f9bb2a691c8.zip
Add generic module
Containing identity, always, flip, and compose functions.
Diffstat (limited to 'src')
-rw-r--r--src/gleam/generic.gleam17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/gleam/generic.gleam b/src/gleam/generic.gleam
new file mode 100644
index 0000000..d821ac7
--- /dev/null
+++ b/src/gleam/generic.gleam
@@ -0,0 +1,17 @@
+// A function that returns exactly what it was given.
+pub fn identity(a: a) -> a { a }
+
+// A function that, given two values, ignores one and always returns the other.
+pub fn always(_a: a, b: b) -> b { b }
+
+// Takes a function that takes two arguments and returns a new function that
+// takes the same two arguments, but in reverse order.
+pub fn flip(fun: fn(a, b) -> c) -> fn(b, a) -> c {
+ fn(b, a) { fun(a, b) }
+}
+
+// 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.
+pub fn compose(fun1: fn(a) -> b, fun2: fn(b) -> c) -> fn(a) -> c {
+ fn(a) { fun1(a) |> fun2 }
+}