summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/plain
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2013-08-09 22:15:51 +0000
committerKarl Berry <karl@freefriends.org>2013-08-09 22:15:51 +0000
commita7e117da3cb21d1ee63a0e427b8bd5de014b221b (patch)
tree5db7e617eae1ccfa92695c7e9621f7a33a7aa9b0 /Master/texmf-dist/tex/plain
parent7d3462c6a518313b846885660ce59c0a1474958d (diff)
lambda-lists (9aug13), plus remove the lambda.sty copy from skak (CTAN update coming soon)
git-svn-id: svn://tug.org/texlive/trunk@31402 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/plain')
-rw-r--r--Master/texmf-dist/tex/plain/lambda-lists/lambda.sty105
1 files changed, 105 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/plain/lambda-lists/lambda.sty b/Master/texmf-dist/tex/plain/lambda-lists/lambda.sty
new file mode 100644
index 00000000000..50c2c97fe86
--- /dev/null
+++ b/Master/texmf-dist/tex/plain/lambda-lists/lambda.sty
@@ -0,0 +1,105 @@
+% Filename: lambda.sty
+% Author: Alan Jeffrey
+% Last modified: 12 Feb 1990 (license changed to LPPL: 6 Aug 2013)
+%
+% Copyright 1990-2013 Alan Jeffrey.
+% This file is part of the lambda-lists package.
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2003/12/01 or later.
+%
+% This style provides a pile of lambda-calculus and list-handling
+% macros of an incredibly obtuse nature. Read lambda-lists.tex to find out
+% what they all do and how they do it. This \TeX\ code was formally
+% verified.
+% Alan Jeffrey, 25 Jan 1990.
+
+\def\Identity#1{#1}
+
+\def\Error%
+ {\errmessage{Abandon verification all
+ ye who enter here}}
+
+\def\First#1#2{#1}
+\def\Second#1#2{#2}
+
+\def\Compose#1#2#3{#1{#2{#3}}}
+
+\def\Twiddle#1#2#3{#1{#3}{#2}}
+
+\let\True=\First
+\let\False=\Second
+\let\Not=\Twiddle
+
+\def\And#1#2{#1{#2}\False}
+\def\Or#1#2{#1\True{#2}}
+
+\def\Lift#1#2#3#4{#1{#4}{#2}{#3}{#4}}
+
+\def\Lessthan#1#2{\TeXif{\ifnum#1<#2 }}
+
+\def\gobblefalse\else\gobbletrue\fi#1#2%
+ {\fi#1}
+\def\gobbletrue\fi#1#2%
+ {\fi#2}
+\def\TeXif#1%
+ {#1\gobblefalse\else\gobbletrue\fi}
+
+\def\Nil#1#2{#2}
+\def\Cons#1#2#3#4{#3{#1}{#2}}
+\def\Stream#1{\Cons{#1}{\Stream{#1}}}
+\def\Singleton#1{\Cons{#1}\Nil}
+
+\def\Head#1{#1\First\Error}
+\def\Tail#1{#1\Second\Error}
+
+\def\Foldl#1#2#3%
+ {#3{\Foldl@{#1}{#2}}{#2}}
+\def\Foldl@#1#2#3#4%
+ {\Foldl{#1}{#1{#2}{#3}}{#4}}
+\def\Foldr#1#2#3%
+ {#3{\Foldr@{#1}{#2}}{#2}}
+\def\Foldr@#1#2#3#4%
+ {#1{#3}{\Foldr{#1}{#2}{#4}}}
+
+\def\Cat#1#2{\Foldr\Cons{#2}{#1}}
+
+\def\Reverse{\Foldl{\Twiddle\Cons}\Nil}
+
+\def\All#1{\Foldr{\Compose\And{#1}}\True}
+\def\Some#1{\Foldr{\Compose\Or{#1}}\False}
+\def\Isempty{\All{\First\False}}
+
+\def\Filter#1%
+ {\Foldr{\Lift{#1}\Cons\Second}\Nil}
+
+\def\Map#1{\Foldr{\Compose\Cons{#1}}\Nil}
+
+\def\Insert#1#2#3%
+ {#3{\Insert@{#1}{#2}}{\Singleton{#2}}}
+\def\Insert@#1#2#3#4%
+ {#1{#2}{#3}%
+ {\Cons{#2}{\Cons{#3}{#4}}}%
+ {\Cons{#3}{\Insert{#1}{#2}{#4}}}}
+\def\Insertsort#1{\Foldr{\Insert{#1}}\Nil}
+
+\def\Unlistize#1{[#1\Unlistize@{}]}
+\def\Unlistize@#1{#1\Foldr\Commaize{}}
+\def\Commaize#1#2{, #1#2}
+
+\def\Listize[#1]%
+ {\Listize@#1,\relax]}
+\def\Listize@#1,#2]%
+ {\TeXif{\ifx\relax#2}%
+ {\Singleton{#1}}%
+ {\Cons{#1}{\Listize@#2]}}}
+
+\def\Show#1[#2]%
+ {\Unlistize{#1{\Listize[#2]}}}
+
+