From f70130322cd306268c5da12c1517dc5725615ae8 Mon Sep 17 00:00:00 2001 From: Louis Pilfold Date: Thu, 15 Feb 2024 12:18:17 +0000 Subject: text -> en --- .../lesson06_tail_calls/en.html | 23 ++++++++++++++++++++++ .../lesson06_tail_calls/text.html | 23 ---------------------- 2 files changed, 23 insertions(+), 23 deletions(-) create mode 100644 src/content/chapter2_flow_control/lesson06_tail_calls/en.html delete mode 100644 src/content/chapter2_flow_control/lesson06_tail_calls/text.html (limited to 'src/content/chapter2_flow_control/lesson06_tail_calls') diff --git a/src/content/chapter2_flow_control/lesson06_tail_calls/en.html b/src/content/chapter2_flow_control/lesson06_tail_calls/en.html new file mode 100644 index 0000000..ec39cda --- /dev/null +++ b/src/content/chapter2_flow_control/lesson06_tail_calls/en.html @@ -0,0 +1,23 @@ +

+ When a function is called a new stack frame is created in memory to store the + arguments and local variables of the function. If lots of these frames are + created during recursion then the program would use a large amount of memory, + or even crash the program if some limit is hit. +

+

+ To avoid this problem Gleam supports tail call optimisation, which + allows the compiler to reuse the stack frame for the current function if a + function call is the last thing the function does, removing the memory cost. +

+ +

+ Unoptimised recursive functions can often be rewritten into tail call + optimised functions by using an accumulator. An accumulator is a variable that + is passed along in addition to the data, similar to a mutable variable in a + language with while loops. +

+

+ Accumulators should be hidden away from the users of your code, they are + internal implementation details. To do this write a public function that calls + a recursive private function with the initial accumulator value. +

diff --git a/src/content/chapter2_flow_control/lesson06_tail_calls/text.html b/src/content/chapter2_flow_control/lesson06_tail_calls/text.html deleted file mode 100644 index ec39cda..0000000 --- a/src/content/chapter2_flow_control/lesson06_tail_calls/text.html +++ /dev/null @@ -1,23 +0,0 @@ -

- When a function is called a new stack frame is created in memory to store the - arguments and local variables of the function. If lots of these frames are - created during recursion then the program would use a large amount of memory, - or even crash the program if some limit is hit. -

-

- To avoid this problem Gleam supports tail call optimisation, which - allows the compiler to reuse the stack frame for the current function if a - function call is the last thing the function does, removing the memory cost. -

- -

- Unoptimised recursive functions can often be rewritten into tail call - optimised functions by using an accumulator. An accumulator is a variable that - is passed along in addition to the data, similar to a mutable variable in a - language with while loops. -

-

- Accumulators should be hidden away from the users of your code, they are - internal implementation details. To do this write a public function that calls - a recursive private function with the initial accumulator value. -

-- cgit v1.2.3