%% %% This is file `sample-acmsmall.tex', %% generated with the docstrip utility. %% %% The original source files were: %% %% samples.dtx (with options: `acmsmall') %% %% IMPORTANT NOTICE: %% %% For the copyright see the source file. %% %% Any modified versions of this file must be renamed %% with new filenames distinct from sample-acmsmall.tex. %% %% For distribution of the original source see the terms %% for copying and modification in the file samples.dtx. %% %% This generated file may be distributed as long as the %% original source files, as listed above, are part of the %% same distribution. (The sources need not necessarily be %% in the same archive or directory.) %% %% %% Commands for TeXCount %TC:macro \cite [option:text,text] %TC:macro \citep [option:text,text] %TC:macro \citet [option:text,text] %TC:envir table 0 1 %TC:envir table* 0 1 %TC:envir tabular [ignore] word %TC:envir displaymath 0 word %TC:envir math 0 word %TC:envir comment 0 0 %% %% %% The first command in your LaTeX source must be the \documentclass command. \documentclass[acmsmall]{acmart} %% %% \BibTeX command to typeset BibTeX logo in the docs \AtBeginDocument{% \providecommand\BibTeX{{% \normalfont B\kern-0.5em{\scshape i\kern-0.25em b}\kern-0.8em\TeX}}} %% Rights management information. This information is sent to you %% when you complete the rights form. These commands have SAMPLE %% values in them; it is your responsibility as an author to replace %% the commands and values with those provided to you when you %% complete the rights form. \setcopyright{acmcopyright} \copyrightyear{2022} \acmYear{2022} \acmDOI{10.1145/1122445.1122456} %% %% These commands are for a JOURNAL article. \acmJournal{JACM} \acmVolume{37} \acmNumber{4} \acmArticle{111} \acmMonth{8} %% %% Submission ID. %% Use this when submitting an article to a sponsored event. You'll %% receive a unique submission ID from the organizers %% of the event, and this ID should be used as the parameter to this command. \acmSubmissionID{123-A56-BU3} %% %% The majority of ACM publications use numbered citations and %% references. The command \citestyle{authoryear} switches to the %% "author year" style. %% %% If you are preparing content for an event %% sponsored by ACM SIGGRAPH, you must use the "author year" style of %% citations and references. %% Uncommenting %% the next command will enable that style. %%\citestyle{acmauthoryear} %% %% end of the preamble, start of the body of the document source. \begin{document} %% %% The "title" command has an optional parameter, %% allowing the author to define a "short title" to be used in page headers. \title{Efficient compilation of a functional Lisp based on Vau calculus} %% %% The "author" command and its associated commands are used to define %% the authors and their affiliations. %% Of note is the shared affiliation of the first two authors, and the %% "authornote" and "authornotemark" commands %% used to denote shared contribution to the research. \author{Nathan Braswell} \email{nathan.braswell@gtri.@gatech.edu} %%\orcid{1234-5678-9012} %%\author{G.K.M. Tobin} %%\authornotemark[1] %%\email{webmaster@marysville-ohio.com} \affiliation{% \institution{Georgia Tech} %%\streetaddress{P.O. Box 1212} \city{Atlanta} \state{GA} \country{USA} %%\postcode{43017-6221} } %%\author{Lars Th{\o}rv{\"a}ld} %%\affiliation{% %% \institution{The Th{\o}rv{\"a}ld Group} %% \streetaddress{1 Th{\o}rv{\"a}ld Circle} %% \city{Hekla} %% \country{Iceland}} %%\email{larst@affiliation.org} %%\author{Valerie B\'eranger} %%\affiliation{% %% \institution{Inria Paris-Rocquencourt} %% \city{Rocquencourt} %% \country{France} %%} %%\author{Aparna Patel} %%\affiliation{% %% \institution{Rajiv Gandhi University} %% \streetaddress{Rono-Hills} %% \city{Doimukh} %% \state{Arunachal Pradesh} %% \country{India}} %%\author{Huifen Chan} %%\affiliation{% %% \institution{Tsinghua University} %% \streetaddress{30 Shuangqing Rd} %% \city{Haidian Qu} %% \state{Beijing Shi} %% \country{China}} %%\author{Charles Palmer} %%\affiliation{% %% \institution{Palmer Research Laboratories} %% \streetaddress{8600 Datapoint Drive} %% \city{San Antonio} %% \state{Texas} %% \country{USA} %% \postcode{78229}} %%\email{cpalmer@prl.com} %%\author{John Smith} %%\affiliation{% %% \institution{The Th{\o}rv{\"a}ld Group} %% \streetaddress{1 Th{\o}rv{\"a}ld Circle} %% \city{Hekla} %% \country{Iceland}} %%\email{jsmith@affiliation.org} %%\author{Julius P. Kumquat} %%\affiliation{% %% \institution{The Kumquat Consortium} %% \city{New York} %% \country{USA}} %%\email{jpkumquat@consortium.net} %% %% By default, the full list of authors will be used in the page %% headers. Often, this list is too long, and will overlap %% other information printed in the page headers. This command allows %% the author to define a more concise list %% of authors' names for this purpose. %%\renewcommand{\shortauthors}{Trovato and Tobin, et al.} %% %% The abstract is a short summary of the work to be presented in the %% article. \begin{abstract} Naively executing a language using Vau and Fexprs instead of macros is slow. \end{abstract} %% %% The code below is generated by the tool at http://dl.acm.org/ccs.cfm. %% Please copy and paste the code instead of the example below. %% %%\begin{CCSXML} %% %% %% 10010520.10010553.10010562 %% Computer systems organization~Embedded systems %% 500 %% %% %% 10010520.10010575.10010755 %% Computer systems organization~Redundancy %% 300 %% %% %% 10010520.10010553.10010554 %% Computer systems organization~Robotics %% 100 %% %% %% 10003033.10003083.10003095 %% Networks~Network reliability %% 100 %% %% %%\end{CCSXML} %%\ccsdesc[500]{Computer systems organization~Embedded systems} %%\ccsdesc[300]{Computer systems organization~Redundancy} %%\ccsdesc{Computer systems organization~Robotics} %%\ccsdesc[100]{Networks~Network reliability} %% %% Keywords. The author(s) should pick words that accurately describe %% the work being presented. Separate the keywords with commas. \keywords{partial evaluation, vau, fexprs, WebAssembly} %% %% This command processes the author and affiliation and title %% information and builds the first part of the formatted document. %%\maketitle \section{Introduction and Motivation} Vaus \cite{shutt2010fexprs} (at \url{https://web.wpi.edu/Pubs/ETD/Available/etd-090110-124904/unrestricted/jshutt.pdf}) All code available at \url{https://github.com/limvot/kraken} \section{Prior Work} \begin{itemize} \item{} Axis of Eval rundown of attempted implmentations - \url{https://axisofeval.blogspot.com/2011/09/kernel-underground.html} \\ \item{} Lambda The Ultimate small discussion of partial eval for Vau/Kernel - \url{http://lambda-the-ultimate.org/node/4346} \\ \item{} Implementing a Vau-based Language With Multiple Evaluation Strategies - \cite{kearsleyimplementing} \\ Talks about how partial evaluation could make efficient, doesn't do it. \item{} Google Groups email thread by Andres Navarro - \url{https://groups.google.com/g/klisp/c/Dva-Le8Hr-g/m/pyl1Ufu-vksJ} \\ Andres Navarro talks about his experimental fklisp which is a "very simple functional dialect of Kernel" with no mutation or first class continuations. It doesn't compile anything, but prints out the partially evalauted expression. Was a work in progress, ran into performance problems, seems abandond. \end{itemize} \subsection{Issues} Slow. \section{Solution} Purely functional. Tricky partial evaluation. \begin{verbatim} ((wrap (vau (let1) (let1 lambda (vau se (p b1) (wrap (eval (array vau p b1) se))) (lambda (n) (* n 2)) ) ; impl of let1 )) (vau de (s v b) (eval (array (array vau (array s) b) (eval v de)) de))) \end{verbatim} \bibliographystyle{ACM-Reference-Format} \bibliography{cited-paper} \end{document} \endinput %% %% End of file `sample-acmsmall.tex'.