|
|
@ -1088,21 +1088,39 @@ implementation strategies. |
|
|
|
|
|
|
|
|
\begin{table} |
|
|
\begin{table} |
|
|
\centering |
|
|
\centering |
|
|
\begin{tabular}{| l | >{\raggedright}p{4.5cm} | l |} |
|
|
|
|
|
|
|
|
\begin{tabular}{| l | >{\raggedright}p{4.3cm} | l |} |
|
|
\hline |
|
|
\hline |
|
|
\multicolumn{1}{|c|}{\textbf{Language}} & \multicolumn{1}{c |}{\textbf{Control operators}} & \multicolumn{1}{c|}{\textbf{Implementation strategies}}\\ |
|
|
\multicolumn{1}{|c|}{\textbf{Language}} & \multicolumn{1}{c |}{\textbf{Control operators}} & \multicolumn{1}{c|}{\textbf{Implementation strategies}}\\ |
|
|
\hline |
|
|
\hline |
|
|
|
|
|
Eff & Effect handlers & Virtual machine, interpreter \\ |
|
|
|
|
|
\hline |
|
|
|
|
|
Effekt & Lexical effect handlers & ??\\ |
|
|
|
|
|
\hline |
|
|
|
|
|
Frank & N-ary effect handlers & Abstract machine \\ |
|
|
|
|
|
\hline |
|
|
|
|
|
Gauche & callcc, shift/reset & Virtual machine \\ |
|
|
|
|
|
\hline |
|
|
|
|
|
Helium & Effect handlers & CEK machine \\ |
|
|
|
|
|
\hline |
|
|
|
|
|
Koka & Effect handlers & Continuation monad\\ |
|
|
|
|
|
\hline |
|
|
Links & Effect handlers, escape & CEK machine, CPS\\ |
|
|
Links & Effect handlers, escape & CEK machine, CPS\\ |
|
|
\hline |
|
|
\hline |
|
|
MLton & callcc & Stack copying\\ |
|
|
MLton & callcc & Stack copying\\ |
|
|
\hline |
|
|
\hline |
|
|
Multicore OCaml & Effect handlers & Segmented stacks\\ |
|
|
|
|
|
|
|
|
Multicore OCaml & Affine effect handlers & Segmented stacks\\ |
|
|
|
|
|
\hline |
|
|
|
|
|
OchaCaml & shift/reset & Virtual machine\\ |
|
|
|
|
|
\hline |
|
|
|
|
|
Racket & callcc, callcc$^{\ast}$, cupto, fcontrol, prompt/control, shift/reset, splitter, spawn & Continuation marks\\ |
|
|
|
|
|
\hline |
|
|
|
|
|
Rhino JavaScript & JI & Interpreter \\ |
|
|
\hline |
|
|
\hline |
|
|
Racket & callcc, callcc$^{\ast}$, fcontrol, prompt/control, shift/reset, splitter, spawn & Continuation marks\\ |
|
|
|
|
|
|
|
|
Scala & shift/reset & CPS\\ |
|
|
\hline |
|
|
\hline |
|
|
Rhino JavaScript & A variation of J & Interpreter \\ |
|
|
|
|
|
|
|
|
SML/NJ & callcc & CPS\\ |
|
|
\hline |
|
|
\hline |
|
|
SML/NJ & callcc & CPS\\ |
|
|
|
|
|
|
|
|
Wasm/k & prompt/control & ?? \\ |
|
|
\hline |
|
|
\hline |
|
|
\end{tabular} |
|
|
\end{tabular} |
|
|
\caption{Some languages and their implementation strategies for first-class control.}\label{tbl:ctrl-operators-impls} |
|
|
\caption{Some languages and their implementation strategies for first-class control.}\label{tbl:ctrl-operators-impls} |
|
|
|