Compare commits
No commits in common. "8368283a3ecfdee8669481aef61ecb30ce167fae" and "b0e501f08652de10d1e91d02151328f8568b46eb" have entirely different histories.
8368283a3e
...
b0e501f086
|
@ -103,17 +103,6 @@ needed to compute the final answer can exist, unsimplified, in the tree.
|
||||||
Why don't we draw a few graphs to get familiar with the idea?
|
Why don't we draw a few graphs to get familiar with the idea?
|
||||||
|
|
||||||
### Visualizing Graphs and Their Reduction
|
### Visualizing Graphs and Their Reduction
|
||||||
__A word of caution__: the steps presented below may significantly differ
|
|
||||||
from the actual graph reduction algorithms used by modern compilers.
|
|
||||||
In particular, this section draws a lot of ideas from Simon Peyton Jones' book,
|
|
||||||
[_Implementing functional languages: a tutorial_](https://www.microsoft.com/en-us/research/publication/implementing-functional-languages-a-tutorial/).
|
|
||||||
However, modern functional compilers (i.e. GHC) use a much more
|
|
||||||
complicated abstract machine for evaluating graph-based code,
|
|
||||||
based on -- from what I know -- the [spineless tagless G-machine](https://www.microsoft.com/en-us/research/wp-content/uploads/1992/04/spineless-tagless-gmachine.pdf).
|
|
||||||
In short, this section, in order to build intuition, walks through how a functional program
|
|
||||||
evaluated using graph reduction _may_ behave; the actual details
|
|
||||||
depend on the compiler.
|
|
||||||
|
|
||||||
Let's start with something that doesn't have anything fancy. We can
|
Let's start with something that doesn't have anything fancy. We can
|
||||||
take a look at the graph of the expression:
|
take a look at the graph of the expression:
|
||||||
|
|
||||||
|
|
|
@ -28,7 +28,6 @@ pre code {
|
||||||
border: $code-border;
|
border: $code-border;
|
||||||
display: block;
|
display: block;
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
margin-bottom: 1rem;
|
|
||||||
|
|
||||||
td {
|
td {
|
||||||
padding: 0;
|
padding: 0;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user