See http://www.willamette.edu/~fruehr/haskell/evolution.html for various interesting applications of the HaskellLanguage. Proves that ThereIsMoreThanOneWayToDoIt in HaskellLanguage, and that HaskellCanBeAsGoodAsPerl (well, not really).

I think of this as the ObfuscatedPerl contest meets MathematicsMadeDifficult. The later versions are all based on ludicrously overpowered excursions into CategoryTheory.
----

Somebody in OnMonads pointed out that the above document doesn't have a monadic factorial, so I will provide one.  One imagines that this would be written by someone who came from an asm background...
    slice :: [a] -> Int -> Int -> [a]
    slice _ _ 1 = []
    slice x:xs 0 end = x : (slice xs 0 (end - 1))
    slice x:xs beg end = slice xs (beg - 1) (end - 1)


    data Variable = Var Int
    data Scope    = [Int]
    data ScopeFn a = Scope -> (a, Scope) deriving Monad;
    new :: ScopeFn Variable
    new scope fn = fn ((Var (length scope)), scope)
    set :: Variable -> Int -> ScopeFn ()
    set (Var x) value scope fn = fn ((), ((slice scope 0 x) ++ [value] ++ (slice scope (x + 2) (length scope))))
    get :: Variable -> ScopeFn Int
    get (Var x) scope fn = fn (scope !! x, scope)


    (>>=) :: ScopeFn a -> (a -> ScopeFn b) -> ScopeFn b
    (>>=) fn1 fn2 scope1 =
      let (value, scope2) = fn1 scope1
      in  fn2 value scope2
    return :: a -> ScopeFn a
    return x scope = (x, scope)


    prod :: Variable -> Variable -> Variable -> ScopeFn ()
    prod res a b = do
      a' = get a
      b' = get b
      set res (a' * b')
    dec  :: Variable -> ScopeFn ()
    dec v = do
      v' = get v
      set v (v' - 1)
    inScope :: ScopeFn a -> a
    inScope fn =
      ret where (ret, _) = fn []



    fac :: Int -> Int
    fac' x y = do
      prod x x y
      dec y
      y' <- get y
      if (y' == 0)
        then return ()
        else fac' x y

   fac x = inScope do
     total <- new
     va <- new
     set va x
     set total 1
     fac' total va
     ret <- get va
     return va




----
CategoryFunctionalProgramming CategoryHaskell