aboutsummaryrefslogtreecommitdiff
path: root/src/content/chapter1_functions/lesson04_generic_functions
diff options
context:
space:
mode:
Diffstat (limited to 'src/content/chapter1_functions/lesson04_generic_functions')
-rw-r--r--src/content/chapter1_functions/lesson04_generic_functions/code.gleam19
-rw-r--r--src/content/chapter1_functions/lesson04_generic_functions/text.html25
2 files changed, 0 insertions, 44 deletions
diff --git a/src/content/chapter1_functions/lesson04_generic_functions/code.gleam b/src/content/chapter1_functions/lesson04_generic_functions/code.gleam
deleted file mode 100644
index e232bf8..0000000
--- a/src/content/chapter1_functions/lesson04_generic_functions/code.gleam
+++ /dev/null
@@ -1,19 +0,0 @@
-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))
-}
diff --git a/src/content/chapter1_functions/lesson04_generic_functions/text.html b/src/content/chapter1_functions/lesson04_generic_functions/text.html
deleted file mode 100644
index 1369c93..0000000
--- a/src/content/chapter1_functions/lesson04_generic_functions/text.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<p>
- Up until now each function has accepted precisely one type for each of its
- arguments.
-</p>
-<p>
- The <code>twice</code> function for example only worked with functions that
- would take and return ints. This is overly restrictive, it should be possible
- to use this function with any type, so long as the function and the initial
- value are compatible.
-</p>
-<p>
- To enable this Gleam support <em>generics</em>, also known as <em>parametric
- polymorphism</em>.
-</p>
-<p>
- This works by instead of specifying a concrete type, a type variable is used
- which stands in for whatever specific type is being used when the function is
- called. These type variable are written with a lowercase name.
-</p>
-<p>
- Type variables are not like an <code>any</code> type, they get replaced with a
- specific type each time the function is called. Try uncommenting
- <code>twice(10, exclaim)</code> to see the compiler error from trying to use a
- type variable as an int and a string at the same time.
-</p>