-
Notifications
You must be signed in to change notification settings - Fork 0
Here
Bill Hails edited this page Dec 7, 2023
·
12 revisions
The special construct here
takes a function of one argument and passes it the current continuation as a function
so that calling the current continuation is equivalent to returning through here
.
An example may make this clearer (or might not, continuations are notoriously tricky to get your head around at first 😁)
fn funky(k) { k(3) }
3 + here fn(k) {
if (funky(k)) {
4
} else {
5
}
};
returns 6
.
A continuation is first class like any other function and can be passed to other functions, stored in variables, called later etc. Simply put, continuations are first-class return statements.
The type of here
is ((#a -> #b) -> #a) -> #a
(see Type Notation for a discussion of ->
).
here
is calledcall-with-current-continuation
, orcall/cc
in other languages.
CEKF(s) a.k.a. F Natural a.k.a F♮