Gofer benutzt das Einrücken einzelner Programmteile
gegenüber dem Rest des Programms zur Erkennung der
Struktur des Programms (Geltungsbereiche von lokalen
Definitionen (where, let) und Alternativen eines case
Ausdrucks).
Beispiel:
f x y = g ( x + w )
where g u = u + v
where v = u * u
w = 2 + y
Durch das Einrücken der zweiten 'where'-Klausel wird
deutlich, dav eine lokale Variable der Definition
von g ist, während w (genauso weit eingerückt wie die
Definition von g) zu der Definition von f gehört. f x y = g ( x + w )
where { g u = u + v
where { v = u * u
}; w = 2 + y
}
Die Eingabe dieser Klammerung ist jedoch nicht nötig, da
sie durch das Einrücken einzelner Programmteile
automatisch eingefügt werden kann. Dabei wird nach
folgenden Regeln (Layout-Rules) verfahren:
let a = fact 12 in a + awird übersetzt in
let {a = fact 12} in a + a
('in' ist unerwartetes Token)