aboutsummaryrefslogtreecommitdiff
path: root/src/content/chapter1_functions/lesson06_generic_functions/en.html
diff options
context:
space:
mode:
authorLouis Pilfold <louis@lpil.uk>2024-02-15 12:18:17 +0000
committerLouis Pilfold <louis@lpil.uk>2024-02-19 18:18:04 +0000
commitf70130322cd306268c5da12c1517dc5725615ae8 (patch)
tree2f047d58f0bd0c9438d57b42499d40d13fea73ad /src/content/chapter1_functions/lesson06_generic_functions/en.html
parent63120914512bd4a3003788a7592ef3cc4ff32cf5 (diff)
downloadtour-f70130322cd306268c5da12c1517dc5725615ae8.tar.gz
tour-f70130322cd306268c5da12c1517dc5725615ae8.zip
text -> en
Diffstat (limited to 'src/content/chapter1_functions/lesson06_generic_functions/en.html')
-rw-r--r--src/content/chapter1_functions/lesson06_generic_functions/en.html25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/content/chapter1_functions/lesson06_generic_functions/en.html b/src/content/chapter1_functions/lesson06_generic_functions/en.html
new file mode 100644
index 0000000..fcd9bec
--- /dev/null
+++ b/src/content/chapter1_functions/lesson06_generic_functions/en.html
@@ -0,0 +1,25 @@
+<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 variables 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>