summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/lisp-on-tex/examples/div2.tex
blob: ae2cf824ee632d995eeb3fdbeaefded68008d037 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
\documentclass{article}
%\usepackage{lisp-on-tex}
\usepackage[markGC]{lisp-on-tex}
\lispinterp {
  (\define (\create \n) (\createAcc \n ()))
  (\define (\createAcc \n \acc)
    (\lispif (\= \n :0) \acc (\createAcc (\- \n :1) (\cons () \acc))))
  (\define \ll (\create :200))
  (\define (\divII \l)
    (\lispif (\= \l ()) () (\cons (\car \l) (\divII (\cdr (\cdr \l))))))
  (\define (\test \l) (\testAcc \l :500)) % original is 300
  (\define (\testAcc \l \i)
    (\lispif (\= \i :0) ()
      (\begin
        (\lispif (\= (\length (\divII \l)) :100)
            () (\texprint 'Hmm'))
        (\lispif (\= (\length (\divII \l)) :100)
            () (\message 'Hmm'))
        (\lispif (\= (\length (\divII \l)) :100)
            () (\message 'Hmm'))
        (\lispif (\= (\length (\divII \l)) :100)
            () (\message 'Hmm'))
        (\texprint \i)
        (\texprint ' ')
        (\testAcc \l (\- \i :1)))))
}

\begin{document}
  \lispinterp{(\test \ll)}
\end{document}