diff options
Diffstat (limited to 'src/content/chapter1_functions/lesson06_generic_functions/en.html')
-rw-r--r-- | src/content/chapter1_functions/lesson06_generic_functions/en.html | 25 |
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> |