aboutsummaryrefslogtreecommitdiff
path: root/src/content/chapter1_functions/lesson04_generic_functions/code.gleam
diff options
context:
space:
mode:
Diffstat (limited to 'src/content/chapter1_functions/lesson04_generic_functions/code.gleam')
-rw-r--r--src/content/chapter1_functions/lesson04_generic_functions/code.gleam19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/content/chapter1_functions/lesson04_generic_functions/code.gleam b/src/content/chapter1_functions/lesson04_generic_functions/code.gleam
new file mode 100644
index 0000000..e232bf8
--- /dev/null
+++ b/src/content/chapter1_functions/lesson04_generic_functions/code.gleam
@@ -0,0 +1,19 @@
+import gleam/io
+
+pub fn main() {
+ let add_one = fn(x) { x + 1 }
+ let exclaim = fn(x) { x <> "!" }
+
+ // Invalid, Int and String are not the same type
+ // twice(10, exclaim)
+
+ // Here the type variable is replaced by the type Int
+ io.debug(twice(10, add_one))
+
+ // Here the type variable is replaced by the type String
+ io.debug(twice("Hello", exclaim))
+}
+
+fn twice(argument: value, function: fn(value) -> value) -> value {
+ function(function(argument))
+}