<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE languages SYSTEM "languages.dtd">
<?xml-stylesheet type="application/xml" href="languages.xsl"?>
<languages>
  <language name="Erlang" who="garillot">f91(N) when N > 100 ->  N-10;
f91(N) when N =&lt; 100 -> f91(f91(N+11)).</language>
  <language name="OCaml" who="frisch">let rec f x = if x > 100 then x - 10 else f (f (x + 11))</language>
  <language name="F#" who="garillot">let rec f x = if x > 100 then x - 10 else f (f (x + 11))</language>
  <language name="Scheme" who="madore">(define (f x) (if (> x 100) (- x 10) (f (f (+ x 11)))))</language>
  <language name="Forth" who="pornin">: f dup 100 > if 10 - else 11 + recurse recurse then ;</language>
  <language name="C Ansi" who="pornin">int
f(int x)
{
        return (x > 100) ? x - 10 : f(f(x + 11));
}
</language>
  <language name="C K&amp;R" who="pornin">
int f(x)
  int x;
{
        return (x > 100) ? x - 10 : f(f(x + 11));
}
</language>
  <language name="Java" who="pornin">
public class F {
  public static int f(int x)
  {
        return (x > 100) ? x - 10 : f(f(x + 11));
  }
}
</language>
<language name="CDuce" who="frisch"><![CDATA[let f( *--101 -> 91;
      102 -> 92; 103 -> 93; 104 -> 94; 105 -> 95;
      106 -> 96; 107 -> 97; 108 -> 98; 109 -> 99;
      110 -> 100; 111 -> 101; 102--* -> 92--* )
| 101--* & x -> x - 10 
| x -> f(f(x+11));;]]></language>
  <language name="MATLAB" who="primet">function y = f(x)
if (x > 100)
    y = x - 10 ;
else
    y = f (f (x + 11)) ;
end</language>
  <language name="Octave" who="mguillau">function y = f(x)
if (x > 100)
    y = x - 10 ;
else
    y = f (f (x + 11)) ;
end</language>
  <language name="PostScript" who="reutenau">/f { dup 100 gt { 10 sub } { 11 add f f } ifelse } def
</language>
  <language name="User-RPL (hp48g(x))" who="ska"><![CDATA[« OVER 100 >
   « SWAP 10 - SWAP »
   « 11 ROT + OVER DUP EVAL SWAP DUP EVAL »
   IFTE
 »
]]>
</language>
  <language name="XSLT 1.0" who="senellar"><![CDATA[<xsl:template name="f">
  <xsl:param name="x" />
  <xsl:choose>
    <xsl:when test="$x>100">
      <xsl:value-of select="$x - 10"/>
    </xsl:when>
    <xsl:otherwise>
      <xsl:call-template name="f">
        <xsl:with-param name="x">
          <xsl:call-template name="f">
            <xsl:with-param name="x" select="$x + 11" />
          </xsl:call-template>
        </xsl:with-param>
      </xsl:call-template>
    </xsl:otherwise>
  </xsl:choose>
</xsl:template>
]]></language>
  <language name="Shakespeare" who="beal">The Miraculous Ninety-One Function of Mac Carthy.

Romeo, a young man.
Juliet, a young and beautiful lady.
Lady Macbeth, an old witch hag.

  Act I: Of Love and Hatred.
  Scene I: Overture.

[Enter Romeo and Juliet]
Romeo: Listen to your heart!
Juliet: You are as healthy as a tree!
[Exit Juliet]
[Enter Lady Macbeth]
Romeo: Remember me!
[Exit Lady Macbeth]
[Enter Juliet]

  Scene II: Here, and here once again later.

Juliet: Am I better than the sum of an amazing lovely gentle
beautiful golden healthy angel and the sum of an happy healthy 
noble handsome honest hero and a cute golden rose? If so, let 
us proceed to scene III.
Romeo: Let us proceed to scene V.

  Scene III: Substracting ten from Juliet.

Romeo: You are as gentle as the difference between thyself and
the sum of a fine gentle blossoming rose and a bold hero. 

  Scene IV: Return of Lady Macbeth.

[Exit Juliet]
[Enter Lady Macbeth]
Romeo: Recall your imminent death!
Lady Macbeth: Am I as good as a tree? If so, let us proceed to scene VII.
Lady Macbeth: Am I as good as a blossoming rose? If so, let us
proceed to scene VI.
[Exit Lady Macbeth]
[Enter Juliet]
Romeo: Let us proceed to scene II.

  Scene V: The First Call.
 
Romeo: You are as fine as the sum of thyself and the sum of
a fair fine gentle hero and the sum of a bold rose and an angel.
Juliet: You are as noble as a golden tree.
[Exit Juliet]
[Enter Lady Macbeth]
Romeo: Remember me!
[Exit Lady Macbeth]
[Enter Juliet]
Juliet: Let us proceed to scene II.

  Scene VI: The Second Call.

[Exit Lady Macbeth]
[Enter Juliet]
Juliet: Let us proceed to scene II.

  Scene VII: The End.

[Exit Lady Macbeth]
[Enter Juliet]
Romeo: Open your heart!
[Exeunt]
</language>
  <language name="Boost MPL" who="senellar"><![CDATA[#include <boost/mpl/apply.hpp>
#include <boost/mpl/arithmetic.hpp>
#include <boost/mpl/comparison.hpp>

namespace mpl=boost::mpl;

template<typename X> class f: public
  mpl::eval_if<
    mpl::greater<X,mpl::int_<100> >,
    mpl::minus<X,mpl::int_<10> >,
    f<f<mpl::plus<X,mpl::int_<11> > > > >
{};
]]></language>
  <language name="Windows PowerShell" who="fourquau"><![CDATA[function f([int]$x) { if ($x -gt 100) { $x-10 } else { f(f($x+11)) } }]]>
</language>
  <language name="Lua" who="madore">function f(x) if x>100 then return x-10 else return f(f(x+11)) end end</language>
  <language name="XSLT 2.0" who="senellar"><![CDATA[<xsl:function name="my:f" as="xs:integer" xmlns:my="urn:my">
  <xsl:param name="x" as="xs:integer" />
  <xsl:value-of select="if ($x>100) then $x - 10 else my:f(my:f($x + 11))" />
</xsl:function>
]]></language>
  <language name="XQuery" who="senellar">declare namespace my="urn:my";

declare function my:f($x as xs:integer) as xs:integer
{
  let $result:=if ($x>100) then $x - 10 else my:f(my:f($x + 11))
  return $result
}
</language>
  <language name="TI-basic" who="marcq">Define f(x)=when(x>100,x-10,f(f(x+11)))
</language>
  <language name="Fortran 90" who="coudert">integer function f(x)
  integer :: x

  if (x > 100) then
    f = x - 10
  else
    f = f(f(x + 11))
  end if

  return
end function f
</language>
  <language name="BASIC" who="beal"><![CDATA[10  INPUT X
20  GOSUB 50
30  PRINT X
40  END
50  IF X <= 100 THEN GOTO 80
60  LET X = X - 10
70  RETURN
80  LET X = X + 11
90  GOSUB 50
100 GOSUB 50
110 RETURN]]>
</language>
  <language name="COBOL" who="beal">IDENTIFICATION DIVISION.
PROGRAM-ID. MacCarthy91
AUTHOR. Frederic BEAL.
* This program demonstrates the power of COBOL programming.

ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 CurrentValue  PIC 9(6) VALUE ZEROS.

PROCEDURE DIVISION.
Begin.
    PERFORM GetInput
    PERFORM MainLoop
    DISPLAY "The result is:" CurrentValue
    STOP RUN.

GetInput.
    DISPLAY "Input any number:"
    ACCEPT CurrentValue.

MainLoop.
    IF CurrentValue GREATER THAN 100 THEN
        SUBSTRACT 10 FROM CurrentValue
    ELSE
        ADD 11 TO CurrentValue
        PERFORM MainLoop
        PERFORM MainLoop
   ENDIF.
</language>
  <language name="TeX" who="noirel">
  \makeatletter
  \def\g#1{\count@=#1\relax \G \number\count@ }
  \def\G{%
    \ifnum\count@ >100
      \advance\count@ by-10
    \else
      \advance\count@ by 11 \G \G
    \fi
  }
  \makeatother
</language>
  <language name="e-TeX" who="noirel">\def\f#1{%
    \ifnum\number#1>100
      \number\numexpr#1-10\relax
    \else
      \expandafter\f\expandafter{%
        \expandafter\f\expandafter{%
          \number\numexpr#1+11\relax
        }%
      }%
    \fi
  }
</language>
  <language name="METAFONT" who="noirel">  
  vardef f(expr x) =
    save result;  numeric result;
    if x > 100:
      result := x - 10;
    else:
      result := f(f(x + 11));
    fi
    result
  enddef;
</language>
  <language name="Assembleur i386 (syntaxe Intel, nasm)" who="fourquau">f:
cmp eax, 100
jg b
sub eax, 10
ret
b:
add eax, 11
call f
jmp f
</language>
  <language name="VBScript" who="fourquau">Function F(Int x)
  If x > 100 Then
    F = x - 10
  Else
    F = F(F(x + 11))
  End If
End Function
</language>
  <language name="JavaScript" who="fourquau">function f(x)
{
        if (x > 100)
        {
                return x - 10;
        }
        else
        {
                return f(f(x + 11));
        };
}
</language>
<language name="C# (une seule expression)" who="fourquau"><![CDATA[class McCarthy91
  {
          delegate T S<T>(S<T> s);

                      public static void Main(string[] args)
                              {
                                              Func<int,int> F = z => new Func<Func<int,int>,Func<int,int>>(f =
                                                      > x => x > 100 ? x-10 : f(f(x+11)))(new S<Func<Func<Func<int, int>, Func<int, in
                                                                t>>, Func<int, int>>>(y => f => x => f(y(y)(f))(x))(y => f => x => f(y(y)(f))(x)
                                                                  )(f => x => x > 100 ? x-10 : f(f(x+11))))(z);
                                                                                  Console.WriteLine(@"{0}", F(Int32.Parse(args[0])));
                                                                                          }
                                                                                          }]]></language>
  <language name="C#" who="fourquau">class Foo
{
        static public int f(int x)
        {
                if (x > 100)
                {
                        return x - 10;
                }
                else
                {
                        return f(f(x + 11));
                };
        }
}
</language>
  <language name=".NET IL" who="fourquau">.method public hidebysig static int32  f(int32 x) cil managed
{
  // Code size       25 (0x19)
  .maxstack  2
  IL_0000:  ldarg.0
  IL_0001:  ldc.i4.s   100
  IL_0003:  ble.s      IL_000a
  IL_0005:  ldarg.0
  IL_0006:  ldc.i4.s   10
  IL_0008:  sub
  IL_0009:  ret
  IL_000a:  ldarg.0
  IL_000b:  ldc.i4.s   11
  IL_000d:  add
  IL_000e:  call       int32 Foo::f(int32)
  IL_0013:  call       int32 Foo::f(int32)
  IL_0018:  ret
} // end of method Foo::f
</language>
  <language name="C Preprocessor" who="pornin"><![CDATA[/* =========== BEGIN ============================================== */
/*
 * Save it in f91obf.c
 * Then use it such:
 * gcc -W -Wall -ansi -pedantic -DX=42 -o f91obf f91obf.c
 * ./f91obf
 */

#if !defined IMY && !defined NTA && !defined FOO \
    && !defined WSM && !defined AAH
#undef BAR
#define BAR  1
#endif
#ifdef BAR
#if ((X) >> 10) != 0
#error Integer overflow
#endif
#if ((X) >> 0) & 1
#define UGJ   1
#else
#define UGJ   0
#endif
#if ((X) >> 1) & 1
#define LXG   1
#else
#define LXG   0
#endif
#if ((X) >> 2) & 1
#define IKD   1
#else
#define IKD   0
#endif
#if ((X) >> 3) & 1
#define CKF   1
#else
#define CKF   0
#endif
#if ((X) >> 4) & 1
#define TGF   1
#else
#define TGF   0
#endif
#if ((X) >> 5) & 1
#define LXQ   1
#else
#define LXQ   0
#endif
#if ((X) >> 6) & 1
#define KPP   1
#else
#define KPP   0
#endif
#if ((X) >> 7) & 1
#define UXM   1
#else
#define UXM   0
#endif
#if ((X) >> 8) & 1
#define JFA   1
#else
#define JFA   0
#endif
#if ((X) >> 9) & 1
#define UOZ   1
#else
#define UOZ   0
#endif
#define YCA    ((UGJ << 0) + (LXG << 1) + (IKD << 2) \
                 + (CKF << 3) + (TGF << 4) + (LXQ << 5) \
                 + (KPP << 6) + (UXM << 7) + (JFA << 8) + (UOZ << 9))
#undef BAR
#define AAH   1
#include __FILE__
#include <stdio.h>
int
main(void)
{
        printf("%d\n", YCA);
        return 0;
}
#endif
#ifdef AAH
#undef AAH
#if YCA > 100
#define WSM
#include __FILE__
#undef WSM
#else
#define NTA
#include __FILE__
#undef NTA
#define AAH   1
#include __FILE__
#define AAH   1
#include __FILE__
#undef AAH
#endif
#endif
#ifdef IMY
#if UGJ
#undef UGJ
#define UGJ   0
#if LXG
#undef LXG
#define LXG   0
#if IKD
#undef IKD
#define IKD   0
#if CKF
#undef CKF
#define CKF   0
#if TGF
#undef TGF
#define TGF   0
#if LXQ
#undef LXQ
#define LXQ   0
#if KPP
#undef KPP
#define KPP   0
#if UXM
#undef UXM
#define UXM   0
#if JFA
#undef JFA
#define JFA   0
#if UOZ
#error Integer overflow
#else
#undef UOZ
#define UOZ   1
#endif
#else
#undef JFA
#define JFA   1
#endif
#else
#undef UXM
#define UXM   1
#endif
#else
#undef KPP
#define KPP   1
#endif
#else
#undef LXQ
#define LXQ   1
#endif
#else
#undef TGF
#define TGF   1
#endif
#else
#undef CKF
#define CKF   1
#endif
#else
#undef IKD
#define IKD   1
#endif
#else
#undef LXG
#define LXG   1
#endif
#else
#undef UGJ
#define UGJ   1
#endif
#endif
#ifdef NTA
#undef NTA
#define IMY
#include __FILE__
#include __FILE__
#include __FILE__
#include __FILE__
#include __FILE__
#include __FILE__
#include __FILE__
#include __FILE__
#include __FILE__
#include __FILE__
#include __FILE__
#undef IMY
#endif
#ifdef FOO
#if UGJ
#undef UGJ
#define UGJ   0
#else
#undef UGJ
#define UGJ   1
#if LXG
#undef LXG
#define LXG   0
#else
#undef LXG
#define LXG   1
#if IKD
#undef IKD
#define IKD   0
#else
#undef IKD
#define IKD   1
#if CKF
#undef CKF
#define CKF   0
#else
#undef CKF
#define CKF   1
#if TGF
#undef TGF
#define TGF   0
#else
#undef TGF
#define TGF   1
#if LXQ
#undef LXQ
#define LXQ   0
#else
#undef LXQ
#define LXQ   1
#if KPP
#undef KPP
#define KPP   0
#else
#undef KPP
#define KPP   1
#if UXM
#undef UXM
#define UXM   0
#else
#undef UXM
#define UXM   1
#if JFA
#undef JFA
#define JFA   0
#else
#undef JFA
#define JFA   1
#if UOZ
#undef UOZ
#define UOZ   0
#else
#undef UOZ
#define UOZ   1
#endif
#endif
#endif
#endif
#endif
#endif
#endif
#endif
#endif
#endif
#endif
#ifdef WSM
#undef WSM
#define FOO
#include __FILE__
#include __FILE__
#include __FILE__
#include __FILE__
#include __FILE__
#include __FILE__
#include __FILE__
#include __FILE__
#include __FILE__
#include __FILE__
#undef FOO
#endif
]]></language>
  <language name="whitespace" who="durrlema"
>   	
    			 	
    	
    		  	 	
    			  	
    		   	
    		 		 	
    		 				
    		 			
    	
    		 			
    			 	 	
    	
    				 	
    		  	 	
    			  	
    			 	
    		 			
    	   	 	
	
   	
   	
   	
   	
   	
   	
   	
   	
   	
   	
   	
   	
   	
   	
   	
   	
   	
   	
      	 	
    	
    	
	
		   	
			
   	

     		  	 	
	  	
			
    	 	
	  	
	   	
	  	

	 		

	

	

   	
    	 		
	
	   	
	
	

	

   		


	
  		



</language>
  <language name="sed" who="mezzarob">s/$/x/
:f
/x/!b fin
:zeros
s/^0//
t zeros
/^[0-9]x/b appel
/^[0-9][0-9]x/b appel
/^100x/b appel
b moinsdix
:appel
s/^/0/
s/0x/1ax/
s/1x/2ax/
s/2x/3ax/
s/3x/4ax/
s/4x/5ax/
s/5x/6ax/
s/6x/7ax/
s/7x/8ax/
s/8x/9ax/
s/9x/0ax/
s/0\([1-9]\)a/1\1/
s/1\([1-9]\)a/2\1/
s/2\([1-9]\)a/3\1/
s/3\([1-9]\)a/4\1/
s/4\([1-9]\)a/5\1/
s/5\([1-9]\)a/6\1/
s/6\([1-9]\)a/7\1/
s/7\([1-9]\)a/8\1/
s/8\([1-9]\)a/9\1/
s/9\([1-9]\)a/'0\1/
s/00a/20/
s/10a/30/
s/20a/40/
s/30a/50/
s/40a/60/
s/50a/70/
s/60a/80/
s/70a/90/
s/80a/'00/
s/90a/'10/
:r11
s/0'/1/
s/1'/2/
s/2'/3/
s/3'/4/
s/4'/5/
s/5'/6/
s/6'/7/
s/7'/8/
s/8'/9/
s/9'/'0/
s/^'/1/
t r11
s/$/x/
b f
:moinsdix
s/0\([0-9]\)x/b\1x/
s/1\([0-9]\)x/0\1x/
s/2\([0-9]\)x/1\1x/
s/3\([0-9]\)x/2\1x/
s/4\([0-9]\)x/3\1x/
s/5\([0-9]\)x/4\1x/
s/6\([0-9]\)x/5\1x/
s/7\([0-9]\)x/6\1x/
s/8\([0-9]\)x/7\1x/
s/9\([0-9]\)x/8\1x/
s/b/'9/
:r
s/1'/0/
s/2'/1/
s/3'/2/
s/4'/3/
s/5'/4/
s/6'/5/
s/7'/6/
s/8'/7/
s/9'/8/
s/0'/'0/
t r
s/x$//
b f
:fin
s/^0//
t fin
</language>
  <language name="lambda-calcul (entiers de Church)" who="mguillau">
(lf.(lx.(f (x x)) lx.(f (x x))) lf.ln.((((lm.ln.(ln.((n lz.lx.ly.y) lx.ly.x)
((lm.ln.((n lk.(ls.(s lx.ly.y) ((k ls.lz.((z (ln.lf.lx.(f ((n f) x)) (ls.(s
lx.ly.x) s))) (ls.(s lx.ly.x) s))) lz.((z lf.lx.x) lf.lx.x)))) m) m) n)) n)
lf.lx.(f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f
(f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f
(f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f
(f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f
(f (f (f x)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
))))))))))))))))))))))))))))))))))))) (f (f ((lm.ln.((m ln.lf.lx.(f ((n f)
x))) n) n) lf.lx.(f (f (f (f (f (f (f (f (f (f (f x)))))))))))))))
((lm.ln.((n lk.(ls.(s lx.ly.y) ((k ls.lz.((z (ln.lf.lx.(f ((n f) x)) (ls.(s
lx.ly.x) s))) (ls.(s lx.ly.x) s))) lz.((z lf.lx.x) lf.lx.x)))) m) n)
lf.lx.(f (f (f (f (f (f (f (f (f (f x)))))))))))))
</language>
  <language name="Lazy K" who="garillot"><![CDATA[(load "./lazier.scm")
(load "./prelude.scm")
(load "./prelude-numbers.scm")

(lazy-def 'phi '((lambda (p z) (z (succ (p #t)) (p #t)))))

(lazy-def 'pred '(lambda (n) (n phi (lambda (z) (z 0 0)) #f)))

(lazy-def '(minus a b)   '(b pred a))

(lazy-def '(g f x)       '(if<= x 100 (f (f (+ x 11))) (minus x 10) ))

(lazy-def '(mcc y)        '(g (Y g) y))

(print-as-unlambda (laze 'mcc))
]]></language>
  <language name="Unlambda" who="garillot">``s```ss`si`k``s``s`ks``s`k`s``si`k``s`k`sik``s`k`s`kk``s``s`ksk``s``s`ksk
`k``s``si`k`s``s`ksk`k``s``s`ksk``s`k``s``s`kski``s``s`ksk```sii``s``s`ksk
i``s``s`ks``s``s`ks``s``s`ks``s`k`s`k`s`kk``s`k`s`k`si``s`k`s`k`si``s`k`s`
kk``s``s`ksk``s``s`ksk`k``s``si`k`s``s`ksk`k``s``s`ksk``s`k``s``s`kski``s`
`s`ksk```sii``s``s`kski``s``s`ks``s`k`s`ks``s`k`s`kk``s`k`s`k`s`kk``s`k`s`
k`si``s`k`s`k`si``s`k`s`kk``s``s`ksk``s``s`ksk`k``s``si`k`s``s`ksk`k``s``s
`ksk``s`k``s``s`kski``s``s`ksk```sii``s``s`kski``s`k`s`k`s`kk``s`k`s`k`si`
`s``s`ks``s`k`s`ks``s``s`ks``s`k`s`kk``s``s`ks``s``s`ksk``s``s`ksk`k``s``s
i`k`s``s`ksk`k``s``s`ksk``s`k``s``s`kski``s``s`ksk```sii``s``s`kski``s``s`
ksk``s``s`ksk`k``s``si`k`s``s`ksk`k``s``s`ksk``s`k``s``s`kski``s``s`ksk```
sii``s``s`kski``s`k`s`k`s`kk``s`k`s`k`si``s`k`s`k`si``s`k`s`kk``s``s`ksk``
s``s`ksk`k``s``si`k`s``s`ksk`k``s``s`ksk``s`k``s``s`kski``s``s`ksk```sii``
s``s`kski``s`k`s`kk``s``s`ksk``s``s`ksk`k``s``si`k`s``s`ksk`k``s``s`ksk``s
`k``s``s`kski``s``s`ksk```sii``s``s`kski`k`k``s`k`sik`k``s`kk```s``s`kski`
``s``s`ksk```sii``s``s`kski``s``s``si`k``s``s`ks``s`k`si``s`kk``s`k`s``s`k
sk``si`kk```ss`si`kk`k``s``si`k`ki`k`ki`k`kii
</language>
  <language name="brainfuck" who="durrlema"><![CDATA[
 >++++++++[<+++++++++>-]<---.>++++++[<+++++++>-]<-.++++++.--.-------------.
 >++++[<+++++>-]<+.>+++++++++[<---------->-]<.>+++++++++[<+++++++++>-]<++++
.-------.>+++++++++[<--------->-]<+++.>+++++++++[<+++++++++>-]<---.+.--.--
---------.>++++[<++++>-]<.-------------.>++++++++[<--------->-]<+++.>+++++
[<+++++>-]<+.>+++++++[<------->-]<+.[-]>+>+>+[->,----------]<[------------
------------------------<]+[>]<<<<[>>>-[[<]>>>[<+<+>>-]<-[>+<-]+[>]<-]<[<]
 >>>[<++++++++++>-]<-[>+<-]+[>]<<<<]+>->[-]>[-]<++++[>+++++<-]>[<+++++>-]<<
<[>>[<[>>+>+<<<-]>>>[<<<+>>>-]<<[>>+>+<<<-]>>>[<<<+>>>-]<[<->-]>>+<<<[>>>-
<<<[-]]<-]>>>+>[[-]<-<<<<+++++++++++<+>>>>>>]<[[-]<<<<----------<->>>>>]<<
<++++[>+++++<-]>[<+++++>-]<<<]>>[-]>++++++[<+++++++>-]<<[->.<]<++++++++++.
]]></language>
  <language name="Ook" who="durrlema">Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook?
Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook! Ook!
Ook! Ook! Ook! Ook! Ook! Ook. Ook. Ook? Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook?
Ook! Ook! Ook? Ook! Ook? Ook. Ook! Ook! Ook! Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook.
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook. Ook?
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook?
Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook.
Ook. Ook. Ook! Ook. Ook. Ook? Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook! Ook!
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook?
Ook! Ook! Ook? Ook! Ook? Ook. Ook! Ook. Ook. Ook?
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook?
Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook! Ook!
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
Ook! Ook! Ook! Ook. Ook. Ook? Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook! Ook!
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook? Ook! Ook!
Ook? Ook! Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook! Ook. Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook!
Ook? Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook.
Ook. Ook. Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook.
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
Ook! Ook! Ook! Ook. Ook. Ook? Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook!
Ook? Ook! Ook? Ook. Ook! Ook. Ook! Ook! Ook! Ook!
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
Ook! Ook! Ook! Ook. Ook. Ook? Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook! Ook? Ook? Ook. Ook! Ook! Ook! Ook!
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
Ook! Ook! Ook! Ook! Ook. Ook? Ook! Ook! Ook? Ook!
Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook.
Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook!
Ook? Ook! Ook? Ook. Ook. Ook. Ook! Ook. Ook. Ook?
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook! Ook!
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
Ook! Ook! Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook.
Ook. Ook. Ook! Ook. Ook! Ook? Ook! Ook! Ook? Ook!
Ook. Ook? Ook. Ook. Ook. Ook? Ook. Ook. Ook. Ook?
Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook. Ook!
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
Ook? Ook! Ook? Ook. Ook! Ook? Ook! Ook! Ook! Ook!
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook? Ook.
Ook? Ook! Ook. Ook. Ook! Ook? Ook. Ook? Ook? Ook!
Ook? Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook! Ook?
Ook. Ook? Ook. Ook? Ook. Ook? Ook! Ook! Ook! Ook?
Ook! Ook? Ook? Ook. Ook? Ook! Ook. Ook? Ook. Ook?
Ook. Ook? Ook! Ook? Ook? Ook. Ook. Ook. Ook? Ook.
Ook. Ook. Ook. Ook? Ook. Ook? Ook! Ook! Ook? Ook!
Ook? Ook. Ook! Ook! Ook! Ook? Ook. Ook? Ook. Ook.
Ook? Ook. Ook! Ook! Ook? Ook! Ook. Ook. Ook! Ook?
Ook. Ook? Ook? Ook! Ook? Ook. Ook! Ook! Ook? Ook!
Ook? Ook. Ook! Ook? Ook? Ook. Ook? Ook! Ook. Ook?
Ook. Ook? Ook. Ook? Ook! Ook? Ook? Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook?
Ook! Ook! Ook? Ook! Ook? Ook. Ook! Ook! Ook! Ook?
Ook. Ook? Ook. Ook. Ook? Ook. Ook! Ook! Ook? Ook!
Ook. Ook. Ook! Ook? Ook. Ook? Ook? Ook! Ook? Ook.
Ook? Ook. Ook? Ook. Ook? Ook. Ook? Ook! Ook. Ook.
Ook. Ook? Ook! Ook! Ook. Ook? Ook! Ook? Ook! Ook!
Ook? Ook! Ook. Ook? Ook! Ook? Ook! Ook! Ook? Ook!
Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook! Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook? Ook. Ook! Ook! Ook? Ook!
Ook. Ook? Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook!
Ook? Ook! Ook? Ook. Ook? Ook. Ook? Ook. Ook! Ook?
Ook. Ook? Ook. Ook? Ook! Ook? Ook? Ook. Ook! Ook?
Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook? Ook. Ook.
Ook? Ook. Ook? Ook. Ook? Ook. Ook! Ook! Ook? Ook!
Ook. Ook? Ook. Ook? Ook. Ook? Ook! Ook? Ook? Ook.
Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook? Ook. Ook?
Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook? Ook.
Ook! Ook? Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook?
Ook. Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook! Ook!
Ook? Ook! Ook. Ook? Ook. Ook? Ook. Ook? Ook! Ook?
Ook? Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook?
Ook. Ook? Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook.
Ook! Ook? Ook? Ook. Ook! Ook! Ook. Ook? Ook! Ook!
Ook? Ook! Ook. Ook? Ook. Ook? Ook. Ook. Ook? Ook.
Ook? Ook. Ook? Ook. Ook! Ook? Ook. Ook? Ook. Ook?
Ook. Ook? Ook! Ook! Ook? Ook. Ook? Ook. Ook? Ook.
Ook! Ook? Ook! Ook! Ook? Ook! Ook? Ook! Ook? Ook.
Ook! Ook! Ook? Ook! Ook. Ook? Ook. Ook? Ook. Ook?
Ook. Ook. Ook. Ook? Ook! Ook? Ook! Ook? Ook! Ook!
Ook? Ook! Ook? Ook. Ook! Ook! Ook? Ook. Ook? Ook.
Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook. Ook.
Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook?
Ook. Ook? Ook? Ook! Ook? Ook. Ook! Ook? Ook! Ook?
Ook! Ook! Ook? Ook! Ook? Ook. Ook? Ook. Ook? Ook.
Ook? Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
Ook! Ook! Ook? Ook. Ook! Ook! Ook. Ook? Ook. Ook?
Ook. Ook? Ook. Ook? Ook. Ook? Ook? Ook! Ook? Ook.
Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook! Ook? Ook. Ook? Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook! Ook!
Ook? Ook! Ook. Ook? Ook! Ook? Ook? Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook?
Ook! Ook! Ook? Ook! Ook? Ook. Ook? Ook. Ook? Ook.
Ook? Ook! Ook. Ook? Ook. Ook? Ook! Ook? Ook! Ook!
Ook? Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook!
Ook? Ook. Ook? Ook. Ook! Ook? Ook! Ook! Ook. Ook?
Ook! Ook. Ook? Ook. Ook? Ook! Ook? Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook.
</language>
  <language name="befunge" who="durrlema"><![CDATA[>"esaelP",,,,,,vv      *2        <
               4,                5
 >48*,"a",48*,   ".rebmun",,,,,,,^
               8               >  v
               *&                 \
 ^,,,,,"enter",<>1        >:  >|  :
                              :v  5
                              +$  5
       >        \   1-    ^   1   4
                               .  *
       ^  -      *52   _92++\ ^>52*,@
                       ^       `  <
]]></language>
  <language name="Assembleur MIDAS pour PDP-10" who="zoghaib">TITLE MCC
FL=0
A=1
B=2
C=3
P=17

NEGF==1
DIGF==2

CHTTYO==1
CHTTYI==2

PDLEN==100
PDL: BLOCK PDLEN
N:0

LINBUF: BLOCK 30
LINPTR: 0

START:  MOVE P,[-PDLLEN,,PDL-1]
        .CALL [SETZ ? SIXBIT/OPEN/
                [.UAI,,CHTTYI] ? [SIXBIT/TTY/] ((SETZ))]
         .LOSE %LSFIL
        .CALL [SETZ ? SIXBIT/OPEN/
                [.UAO,,CHTTYO] ? [SIXBIT/TTY/] ((SETZ))]
         .LOSE %LSFIL
        PUSHJ P,GETLIN
        MOVE A,[440700,,LINBUF]
        MOVEM A,LINPTR
        PUSHJ P,DECIN
        MOVEM C,N
        PUSHJ P,MCCRT
        PUSHJ P,DECOUT
        MOVEI A,[ASCIZ/
/]
        PUSHJ P,OUTSTR
        .LOGOUT 1
MCCRT:  SUBI B,144
        JUMPLE B,MCCRT1
        SUBI B,132
        POPJ P
MCCRT1: ADDI B,133
        JUMPA MCCRT
        JUMPA MCCRT
DECIN:  TRZ FL,NEGF!DIGF
        MOVEI B,0
DECIN1: ILDB A,LINPTR
        CAIL A,"0
         CAILE A,"9
          JRST DECIN2
        IMULI B,10.
        ADDI B,-"0(A)
        TRO FL,DIGF
        JRST DECIN1
DECIN2: CAIN A,"-
         JRST DECIN3
        TRNN FL,DIGF
         POPJ P,
DECIN4: TRZE FL,NEGF
         MOVN B,B
        POPJ P,
DECIN3: TRNE FL,DIGF
         JRST DECIN4
        TRC FL,NEGF
        JRST DECIN1
GETLIN: .IOT CHTTYO,["*]
        MOVE B,[440700,,LINBUF]
GETLI1: .IOT CHTTYI,A
        CAIN A,^M
         JRST GETLCR
        CAME B,[100700,,LINBFE-1]
         IDPB A,B
        JRST GETLI1
GETLCR: SETZ A,
        IDPB A,B
        POPJ P,
OUTSTR: HRLI A,440700
OUTST1: ILDB B,A
        JUMPE B,CPOPJ
        .IOT CHTTYO,B
        JRST OUTST1
CPOPJ:  POPJ P,

        END     START
</language>
  <language name="Machine du cours de Cousot" who="mezzarob">  0 0
  1 EmpilerSP
  2 EmpilerSP
  3 EmpilerSP
  4 EmpilerSuiv
  5 18
  6 EmpilerCO
  7 EmpilerSuiv
  8 11
  9 goto
 10 Stop
 11 EmpilerLD
 12 EmpilerSP
 13 EmpilerSuiv
 14 2
 15 Sub
 16 DepilerLD
 17 EmpilerLD
 18 EmpilerSuiv
 19 1
 20 Sub
 21 Ranger
 22 EmpilerLD
 23 EmpilerSuiv
 24 2
 25 Sub
 26 Ranger
 27 EmpilerSuiv
 28 100
 29 EmpilerLD
 30 Charger
 31 Ifless
 32 EmpilerSuiv
 33 43
 34 BrZero
 35 EmpilerLD
 36 Charger
 37 EmpilerSuiv
 38 10
 39 Sub
 40 EmpilerSuiv
 41 62
 42 goto
 43 EmpilerSP
 44 EmpilerSP
 45 EmpilerSP
 46 EmpilerSP
 47 EmpilerSP
 48 EmpilerSP
 49 EmpilerLD
 50 Charger
 51 EmpilerSuiv
 52 11
 53 Add
 54 EmpilerCO
 55 EmpilerSuiv
 56 11
 57 goto
 58 EmpilerCO
 59 EmpilerSuiv
 60 11
 61 goto
 62 EmpilerLD
 63 EmpilerSuiv
 64 3
 65 Sub
 66 Ranger
 67 EmpilerLD
 68 EmpilerSuiv
 69 1
 70 Sub
 71 DepilerSP
 72 DepilerLD
 73 EmpilerSuiv
 74 4
 75 Add
 76 goto
</language>
  <language name="Scala" who="garillot">object mccarthy {

  def quatrevingtonze(a: Int): Int = {
    if (a > 100)
      (a-10)
    else {
      quatrevingtonze(quatrevingtonze(a+11))
    }
  }

  def main(args: Array[String]) = {
    val xs = 42
    Console.println(xs)
    Console.println(quatrevingtonze(xs))
  }

}
</language>
  <language name="Coq" who="garillot"><![CDATA[Require Import Arith.
Require Import Max.
Require Import Omega.
Require Import Wf_nat.

Definition ltm (m n:nat) :=
  (max 0 (101-m)) < (max 0 (101-n)).
    
Lemma wf_ltm : well_founded ltm.
apply well_founded_lt_compat with (fun x => (max 0 (101-x))).
unfold ltm.
auto.
Qed.

Definition f91_aux :
  forall x, (forall z, (max 0 (101-z))< (max 0 (101-x)) ->
              {y:nat | (z <=100 /\ y = 91) \/ (z >100 /\ y = z-10)}) ->
            {y:nat | (x <=100 /\ y = 91) \/ (x >100 /\ y = x-10)}.
intros x.
case (le_gt_dec x 100); last exists (x-10); auto.
generalize x; clear x.
refine
  (fun x Heq rec =>
    match rec (x+11) _ with
      | (exist v H) =>
        match rec v _ with
          | (exist v' H) => (exist _ (v') _)
        end
    end); unfold max; omega.
Defined.
              
Definition f91' : forall x, {y:nat | (x <=100 /\ y = 91) \/ (x >100 /\ y =
x-10)} :=
 (well_founded_induction wf_ltm
   (fun x:nat => {y:nat | (x <=100 /\ y = 91) \/ (x >100 /\ y = x-10)})
   f91_aux).
  
Definition f91 (x:nat): nat :=
  match f91' x with (exist v _) => v end.
        
Extraction f91_aux.
]]></language>
  <language name="Ltac" who="garillot"><![CDATA[Require Import Arith.
Require Import Omega.

Ltac mccarthy :=
  match goal with
    | n:nat|- _ => let H := fresh in
      set (H:= (le_gt_dec n 100)); clearbody H; inversion H; 
      try solve [subst n; omega];
        match goal with 
          | I : (_ <= _) |- _ => let N:= fresh "n" in 
            set (N:=(n+11)); subst n; clear n; clear H; clear I; 
            simpl in N; try mccarthy; try mccarthy
          | I: (_ > _) |- _ => let N:= fresh "n" in
            set (N:= (n-10)); subst n; clear n; clear H; clear I; simpl in N
        end
  end.

Goal False.
set (n:=90).
try mccarthy.]]>
</language>
  <language name="Coq 8.1 gamma" who="garillot"><![CDATA[Definition mes (p:nat*nat) : nat := let (r,x) := p in 2*(max 111 x)+21*r-2*x.

Require Import Recdef.

Function f91 (p:nat*nat) {measure mes p} : nat :=
  let (r,x) := p in
  if (eq_nat_dec r 0) then
    x
    else
      if (le_gt_dec x 100) then
        (f91 (r+1,x+11))
        else (f91 (r-1,x-10)).
intros; unfold mes.
assert ((x+11) <= 111); [omega|rewrite (max_l 111 (x+11) H)];
assert (x <= 111); [omega|rewrite (max_l 111 x H0)]; omega.
intros; unfold mes.
case (le_gt_dec x 111); intro H.
assert (x <= 111); [omega|rewrite (max_l 111 x H0)];
assert ((x-10) <= 111); [omega|rewrite (max_l 111 (x-10) H1)]; omega.
assert (111 <= x); [omega|rewrite (max_r 111 x H0)];
case (le_gt_dec x 121); intro H1.
assert ((x-10) <= 111); [omega | rewrite (max_l 111 (x-10) H2)]; omega.
assert (111 <= (x-10)); [omega | rewrite (max_r 111 (x-10) H2)]; omega.
Qed.]]>
</language>
  <language name="AppleScript" who="rose">on f(x)
    if (x is greater than 100) then
        return (x - 10)
    else
        return f(f(x + 11))
    end if
end f
</language>
  <language name="Prolog" who="tmartin"><![CDATA[f(X, R) :-
  X > 100,
  R is X - 10.
f(X, R) :-
  X =< 100,
  Y is X + 11,
  f(Y, Z),
  f(Z, R).]]>
</language>
  <language name="AppleScript (français)" who="rose">quand on f(x)
    si (x est supérieur à 100) alors
        renvoie (x-10)
    sinon
        renvoie f(f(x+11))
    fin si
fin de f
</language>
  <language name="LOLCODE" who="durrlema">HAI
  I HAS A REKURSHUNLVL
  UPZ REKURSHUNLVL!!1
  CAN HAS STDIO?
  I HAS A NUMBAR
  GIMMEH NUMBAR
  IM IN YR REKURSHUN
    IZ REKURSHUNLVL LIEK 0?
      YARLY
        VISIBLE NUMBAR
        BYES
      NOWAI
        IZ NUMBAR BIGR THAN 100?
          YARLY
            NERFZ REKURSHUNLVL!!1
            NERFZ NUMBAR!!10
          NOWAI
            UPZ REKURSHUNLVL!!1
            UPZ NUMBAR!!11
        KTHX
    KTHX
  KTHX
KTHXBYE</language>
  <language name="BCPL" who="mezzarob">GET "libhdr"

LET start() = VALOF {
  LET f(x) = x>100 -> x-10, f(f(x+11))
  LET argv = VEC 2
  LET n = 0
  IF rdargs("n", argv, 1) = 0 DO {
    writes("Argument incorrect*n")
    RESULTIS 1
  }
  n := str2numb(argv!0)
  writef("f(%N) = %N*n", n, f(n))
  RESULTIS 0
}
</language>
  <language name="MySQL" who="senellar">DELIMITER //
CREATE PROCEDURE f(IN x INTEGER, OUT y INTEGER)
BEGIN
  DECLARE z INTEGER;

  IF x>100 THEN
    SET y=x-10;
  ELSE
    CALL f(x+11,z);
    CALL f(z,y);
  END IF;
END;
//
DELIMITER ;
</language>
  <language name="Haskell" who="garillot">f91 :: Int -> Int

f91 n = if n > 100 then n - 10 else f91 (f91 (n+11))
</language>
  <language name="Perl" who="senellar">sub f {
  my $n=shift;
  return $n-10 if $n>100;
  return f(f($n+11));
}</language>
  <language name="Python" who="senellar">def f(x): return (x-10 if x>100 else f(f(x+11)))
</language>
  <language name="PHP" who="senellar"><![CDATA[<?
  function f($x) {
    if($x>100)
      return $x-10;
    else
      return f(f($x+11));
  }
?>]]></language>
  <language name="sh" who="lhabert">f91 () {
  if test "$1" -gt 100; then
    RESULT=`expr "$1" - 10`
  else
    f91 "`expr \"$1\" + 11`"
    f91 "$RESULT"
  fi
}</language>
  <language name="bc" who="mguillau">define f91(x) { if (x>100) return (x-10) else return f91(f91(x+11)) }</language>
  <language name="cmd.exe" who="fourquau">@echo off
setlocal enabledelayedexpansion
call :f91 %1
echo %ans%
goto :EOF
:f91
if %1 gtr 100 (
        set /a ans=%1 - 10
) else (
        set /a ans=%1 + 11
        call :f91 !ans!
        call :f91 !ans!
)</language>
  <language name="Ruby" who="garillot">class McCarthy

  def self.f91 (n)
    if (n > 100) then
      n - 10
    else
      f91(f91(n+11))
    end
  end

end</language>
<language name="Go" who="garillot">func f91(n int) int {
  res := 0
  if n > 100 {
    res = n-10
  } else {
    res = f91(f91(n+11))
  }
  return res
}</language>
  <language name="dc GNU/Solaris" who="madore"><![CDATA[[10-q]sr[d100<r11+lfxlfx]sf]]></language>
  <language name="Maple" who="garillot">f:= x -> if x > 100 then x - 10 else f (f (x+11)) fi;</language>
  <language name="Agda 2" who="garillot">module Mcc where

open import Data.Bool
open import Data.Nat
open import Data.Nat.Properties

mutual
  data D : Nat -> Set where
    c0 : (n : Nat) -> IsTrue (n > 100) -> D n
    c1 : (n : Nat) -> IsTrue (n ≤ 100)
       -> (p : D (n + 11))
       -> D (f91 (n + 11) p)
       -> D n

  f91 : (n : Nat) -> (D n) -> Nat
  f91 .n (c0 n r) = n - 10
  f91 .n (c1 n r p q) = f91 (f91 (n + 11) p) q</language>
<language name="Lolita-shikou Programming" who="tibouchi">katyusha lolita moe dere = 100, chuu = 10, baka = 11;

lolita moe tsun(lolita nii)
{
    apron lolita moe imouto = baka^baka^nii;

    if(imouto > dere) {
        imouto -=~~chuu;
    }
    else {
        imouto = tsun(tsun(baka + nii));
    }

    return imouto;
}</language>
<language name="Like, Python" who="garillot">#!usr/bin/python
uh from sys import exit

def teh mccarthy(x):
        try:
            ma x = int(x) dog
            plz if x > 100:
                so like return teh x - 10
            else:
                ok um like return mccarthy(mccarthy(x+ 11)) broseph
        except Exception as ah e:
            omg lol print "Aint gonna compute that, dude!"
            um exit(something)

if __name__ == '__main__' yeah:
    sup broheim
    anyways so friggin number = sup raw_input("Duh, whitch nunbah ?" biatch) right
    if number.strip() is toootally like "":
        fuckin just exit(1)
    else wicked:
        like print mccarthy(number) man
</language>
<language name="execline" who="ska">#!/command/execlineb -S1
if
{ 
  redirfd -w 1 /tmp/f91
  echo "\
#!/command/execlineb -S1
ifte
{ expr $1 - 10 }
{
  backtick -n FOO { expr $1 + 11 }
  backtick -n BAR { /tmp/f91 $FOO }
  /tmp/f91 $BAR
}
test $1 -gt 100
"
}
foreground { chmod a+x /tmp/f91 }
foreground { /tmp/f91 $1 }
rm -f /tmp/f91
</language>
<language name="Program" who="sozeau">Obligation Tactic := intros.

 Program Fixpoint f91 (n : nat) { measure (101 - n) } :
  {m : nat | if le_lt_dec n 100 then m = 91 else m = n - 10} :=
  if le_lt_dec n 100 then f91 (f91 (n + 11)) else n - 10.

 Next Obligation. abstract omega. Defined.
 Next Obligation. destruct_call f91. simpl proj1_sig. destruct le_lt_dec in y; subst; abstract omega. Defined.

 Next Obligation. destruct (le_lt_dec n 100). repeat (destruct_call f91; simpl proj1_sig in *).
  destruct le_lt_dec in y0. subst. apply y.
  subst x0. destruct le_lt_dec in y. apply y.
  subst x. assert (n = 100) by omega. now subst n.
  exfalso. abstract omega.
 Defined.

 Next Obligation. destruct le_lt_dec. exfalso; abstract omega. reflexivity. Defined.
 Next Obligation. auto with arith. Defined.</language>
<language name="Pascal" who="mazzocchi">FUNCTION mc ( n : integer ) : integer ;
     BEGIN
       IF n > 100 THEN
         mc := n - 10
       ELSE
         mc := mc( mc( n + 11 ));
     END ;
</language>
<language name="Assembleur MIPS (SPIM)" who="mazzocchi">mc:
	lw $t0, 0(sp)            # pop n in $t0
	addi $sp, $sp, 4           
	li $t1, 100                    
	ble $t0, $t1, received   # if n > 100 then
	addi $t0, $t0, -10       # n’ := n - 10
	addi $sp, $sp, -4        # push n’ = push n - 10
	sw $t0, 0($sp)             
	jr $ra                   # return

received:                        # else
	addi $sp, $sp, -4        # push “return address” 
	sw $ra, 0($sp)             
	addi $t0, $t0, 11        # n’ := n + 11
	addi $sp, $sp, -4        # push n’ = push n + 11
	sw $t0, 0($sp)             
	j mc                     # mc(n+11) at the top
	j mc                     # mc(mc(n+11)) at the top
	lw $t0, 0($sp)           # pop mc(mc(n+11)) in $t0
	addi $sp, $sp, 4          
	lw $ra, 0($sp)           # pop “return address” in $ra
	addi $sp, $sp, 4          
	addi $sp, $sp, -4        # push mc(mc(n+11))
	sw $t0, 0($sp)             
	jr $ra                   # return
</language>
</languages>
