diff options
author | Karl Berry <karl@freefriends.org> | 2015-10-25 22:26:36 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2015-10-25 22:26:36 +0000 |
commit | 2e5f14f60a516e247773eb44e16fdf71b24ffc6b (patch) | |
tree | dcf766a159ceb803ff37d6fc6093f14de9a57741 /Master/texmf-dist/doc/latex/lisp-on-tex/tug2013/slide.tex | |
parent | b21104f52f6a326c74adaf89be9b55745d4e65ba (diff) |
lisp-on-tex (25oct15)
git-svn-id: svn://tug.org/texlive/trunk@38706 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/latex/lisp-on-tex/tug2013/slide.tex')
-rw-r--r-- | Master/texmf-dist/doc/latex/lisp-on-tex/tug2013/slide.tex | 213 |
1 files changed, 0 insertions, 213 deletions
diff --git a/Master/texmf-dist/doc/latex/lisp-on-tex/tug2013/slide.tex b/Master/texmf-dist/doc/latex/lisp-on-tex/tug2013/slide.tex deleted file mode 100644 index 5a46c31348e..00000000000 --- a/Master/texmf-dist/doc/latex/lisp-on-tex/tug2013/slide.tex +++ /dev/null @@ -1,213 +0,0 @@ -\documentclass[pdftex,10pt,c,compress]{beamer} -%Settings for LaTeX beamer -\usetheme{Berkeley} -\usecolortheme{orchid} -\setbeamertemplate{navigation symbols}{} - -%Font Info -\usepackage[T1]{fontenc} -\renewcommand{\sfdefault}{phv} -\renewcommand{\ttdefault}{pcr} -% Font Info(pLaTeX only) -%\renewcommand{\kanjifamilydefault}{\gtdefault} - -%packages -\usepackage{url} -\usepackage{lisp-on-tex} - -%colors -\definecolor{orderzero}{HTML}{04BBFF} -\definecolor{orderi}{HTML}{03A8E5} -\definecolor{orderii}{HTML}{038CBF} -\definecolor{orderiii}{HTML}{025E7F} -\definecolor{orderover}{HTML}{012F40} - -\lispinterp{ - (\define \fact (\lambda (\n) - (\lispif (\= \n :0) :1 - (\* (\fact (\- \n :1)) \n)))) -} - -%Document Info -\title{LISP on \TeX} -\subtitle{A LISP Interpreter Written Using \TeX{} Macros} -\author[S. HAKUTA]{HAKUTA Shizuya} -\date[TUG2013]{The 34th Annual Meeting of the TeX Users Group, 2013} - -\begin{document} - \frame{\titlepage} - - \section{Introduction} - - \begin{frame}{Background} - \begin{itemize} - \item Writing \TeX{} macros is useful. - \begin{itemize} - \item e.g. Calculating some small numeric expressions. - \end{itemize} - \item However, it is difficult for novice users. - \vspace{1cm} - \item To improve, there are some researches that combine - \TeX{} and another programming language. - \end{itemize} - \end{frame} - - \begin{frame}{\TeX{} with Other Languages} - Pakin[TUGboat '03] showed four way to connect \TeX{} - and a foreign programing language; - \begin{enumerate} - \item using \texttt{\string\write18} to call an outer processor, - \begin{itemize} - \item python package (CTAN:macros/latex/contrib/python) - \end{itemize} - \item embedding an interpreter in a \TeX{} engine, - \begin{itemize} - \item Lua\TeX{} (CTAN:systems/luatex) - \end{itemize} - \item constructing macros that enable \LaTeX{} to communicate - with an external interpreter, - \begin{itemize} - \item Perl\TeX{} (CTAN:macros/latex/conrtib/perltex) - \end{itemize} - \item creating a language processor with \TeX{} macros - \begin{itemize} - \item \LaTeX3 project created expl3: a new interface of \TeX{} macros, - but {\color{red}no ordinary language was implemented}. - \end{itemize} - \end{enumerate} - \end{frame} - - \section{Goal and Mean} - \begin{frame}{The Goal and the Mean} - Our goals are - \begin{itemize} - \item Implementing a language's interpreter with \TeX{} macros, and - \item Comparing its performance with other approaches. - \end{itemize} - \vspace{0.5cm} - We take two design choices; - \begin{enumerate} - \item Choosing LISP as a ordinary language, and - \item Creating the product as a LaTeX package. - \end{enumerate} - \end{frame} - - \section{LISP on TeX} - \begin{frame}{LISP on \TeX} - We name the our product {\color{red} LISP on \TeX{}}. - \begin{itemize} - \item It was already archived on CTAN and \TeX Live. - \begin{itemize} - \item \url{macros/latex/contrib/lisp-on-tex} - \end{itemize} - \item We constructed all parts of LISP on \TeX{} with \TeX{} macros; - \begin{itemize} - \item parser, recognizing LISP expressions, - \item evaluator, calculating a expression, and - \item environment, mapping symbols to LISP objects. - \end{itemize} - \item The code is written with traditional TeX macros only, - so it works in all \LaTeX{} engines, - \begin{itemize} - \item \LaTeX, pdf\LaTeX, Lua\LaTeX, Xe\LaTeX, p\LaTeX, \dots - \end{itemize} - \end{itemize} - \end{frame} - - - \begin{frame}[t, fragile]{Examples (1/2)} - \structure{Source} - \begin{footnotesize} - \begin{block}{The Preamble of the Slides}\vspace{-\baselineskip} -\begin{semiverbatim} -\\usepackage\{lisp-on-tex\} - -\\lispinterp\{ - (\\define \\fact - (\\lambda (\\n) - (\\lispif (\\= \\n :0) :1 - (\\* (\\fact (\\- \\n :1)) \\n))))\} -\end{semiverbatim}\vspace{-\baselineskip} - \end{block} - \end{footnotesize} - \structure{Result}\mbox{}\\ - \strut\alt<2->{$10!=\lispinterp{(\texprint (\fact :10))}$}% - {\footnotesize - \texttt{\$10!=\string\lispinterp\{(\string\texprint (\string - \fact :10))\}\$}} - \begin{center}\color{red}\Large - \onslide<3->{LISP codes were evaluated!} - \end{center} -\end{frame} - - \begin{frame}{Examples (2/2)} - \begin{center} - \alt<2>{\includegraphics[scale=0.38]{dest_mandel.png}} - {\includegraphics[scale=0.3]{source_mandel.png}} - \end{center} - \end{frame} - - - \begin{frame}{Memory Management Problems} - \begin{itemize} - \item LISP on \TeX{} uses a lot of memory. - \begin{itemize} - \item Yato showed that LISP on \TeX{} stalls - when using a lot of LISP objects\footnote{% - \url{http://d.hatena.ne.jp/zrbabbler/20121116/1353068217} (Japanese Only)}. - \end{itemize} - \item It is caused by spending a lot of control sequences. - \item Building a garbage collection system is one of our future work. - \end{itemize} - \end{frame} - - - \section{Comparison} - \begin{frame}{Comparison to other approaches} - We compared LISP on \TeX{} and other approaches - by three benchmarks. - \begin{itemize} - \item CPU Core i7 2.2GHz, 8GByte Memory, W32TeX - \end{itemize} - \begin{center} - \begin{tabular}{|c||c|c|c|}\hline - & tarai[sec] & asterisks[sec] & Mandelbrot[sec] \\ \hline\hline - LISP on \TeX & 13 & $1.6 \times 10^2$ & $2.1 \times 10^4$\\ \hline - Perl\TeX & 1.0 & 1.0 & $1.6 \times 10^2$ \\ \hline - Lua\TeX & 0.45 & 0.55 & 7.6 \\ \hline - \TeX{} macros & 0.24 & 0.22 & $1.2 \times 10^2$ \\ \hline - expl3 & 1.1 & 1.0 & $5.7 \times 10^3$\\ \hline - \end{tabular} - \end{center} - \begin{itemize} - \item It shows that LISP on \TeX{} is too slow... :-( - \begin{itemize} - \item It is caused by reading \TeX{} tokens repeatedly. - \item[$\Rightarrow$] We can make LISP on \TeX{} faster - with improving the code. - \end{itemize} - \end{itemize} - \end{frame} - - - \section{Conclusion} - \begin{frame}{Conclusion} - \begin{itemize} - \item We implemented LISP on \TeX{}, a LISP interpreter - written only with \TeX{} macros. - \item It works well, but the product has - problems about memory usage and speed. - \end{itemize} - \end{frame} - - \begin{frame}{Why LISP is Selected?} - There are two reasons why we select LISP. - \begin{enumerate} - \item LISP is Turing complete, so it contains all essence of - programming languages. - \item Because LISP has simple syntax and semantics, we can - implement LISP easily. - \end{enumerate} - \end{frame} - -\end{document}
\ No newline at end of file |