Skip to content

Instantly share code, notes, and snippets.

@TOTBWF
Last active July 21, 2021 00:41
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save TOTBWF/f4af09d79ae01487c2dd9bebf864df5c to your computer and use it in GitHub Desktop.
Save TOTBWF/f4af09d79ae01487c2dd9bebf864df5c to your computer and use it in GitHub Desktop.
My submission for the International Obfuscated Haskell Code Competetion
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE ImpredicativeTypes #-}
{-# LANGUAGE ScopedTypeVariables #-}
module IOHCC where
import Unsafe.Coerce
u = unsafeCoerce
-- | Helper function for viewing multiple results, 'fib' is where the magic happens
fibs :: Int -> [Int]
fibs n = fmap (\n -> (fib (l n)) (+1) 0) [1..n]
-- | Convert an integer into a church encoded numeral
l 0 _ z = z
l n s z = s (l (n - 1) s z)
-- | The most elegant functional program to have ever existed.
-- Consists only of 'pure', '<*>', and 'unsafeCoerce'
fib =
(((<*>)
((pure @
((->)
_))
((<*>)
((<*>)
(pure @
((->)
_))
(pure @
((->)
_)))
(u
((<*>)
(pure @
((->)
_))
(pure @
((->)
_))))))
((<*>)
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
((pure @
((->)
_))
((<*>)
((<*>)
(pure @
((->)
_))
(pure @
((->)
_)))
(u
((<*>)
(pure @
((->)
_))
(pure @
((->)
_))))))))
(((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
((((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
(((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
(<*>))
(((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
(<*>)
(pure @
((->)
_))))
((((<*>)
((<*>)
((pure @
((->)
_))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_))))
(<*>))
((pure @
((->)
_))
(pure @
((->)
_))))
(((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
(((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
(((<*>)
((<*>)
((pure @
((->)
_))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_))))
(<*>))
((pure @
((->)
_))
(pure @
((->)
_))))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
(pure @
((->)
_))))
((<*>)
((<*>)
((pure @
((->)
_))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_))))
(<*>))
((pure @
((->)
_))
(pure @
((->)
_))))))
((pure @
((->)
_))
((<*>)
(pure @
((->)
_))
(pure @
((->)
_)))))
u)
(((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
((((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
(((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
(<*>))
(((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
(<*>)
(pure @
((->)
_))))
((((<*>)
((<*>)
((pure @
((->)
_))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_))))
(<*>))
((pure @
((->)
_))
(pure @
((->)
_))))
(((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
(((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
(((<*>)
((<*>)
((pure @
((->)
_))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_))))
(<*>))
((pure @
((->)
_))
(pure @
((->)
_))))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
(pure @
((->)
_))))
((<*>)
((<*>)
((pure @
((->)
_))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_))))
(<*>))
((pure @
((->)
_))
(pure @
((->)
_))))))
((((<*>)
((<*>)
((pure @
((->)
_))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_))))
(<*>))
((pure @
((->)
_))
(pure @
((->)
_))))
((((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
(((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
(<*>))
(((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
(<*>)
(pure @
((->)
_))))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_))))
((<*>)
(pure @
((->)
_))
(pure @
((->)
_))))
((pure @
((->)
_))
((<*>)
(pure @
((->)
_))
(pure @
((->)
_))))))
(u
(((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
(((<*>)
((<*>)
((pure @
((->)
_))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_))))
(<*>))
((pure @
((->)
_))
(pure @
((->)
_))))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
(((<*>)
((<*>)
((pure @
((->)
_))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_))))
(<*>))
((pure @
((->)
_))
(pure @
((->)
_))))
((<*>)
((<*>)
((pure @
((->)
_))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_))))
(<*>))
((pure @
((->)
_))
(pure @
((->)
_))))))
(((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
(((<*>)
((<*>)
((pure @
((->)
_))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_))))
(<*>))
((pure @
((->)
_))
(pure @
((->)
_))))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
(((<*>)
((<*>)
((pure @
((->)
_))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_))))
(<*>))
((pure @
((->)
_))
(pure @
((->)
_))))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))))
(((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
(((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
(((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
(((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
(((<*>)
((<*>)
((pure @
((->)
_))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_))))
(<*>))
((pure @
((->)
_))
(pure @
((->)
_))))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
(pure @
((->)
_)))
(((<*>)
((<*>)
((pure @
((->)
_))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_))))
(<*>))
((pure @
((->)
_))
(pure @
((->)
_))))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
((<*>)
(pure @
((->)
_))
(pure @
((->)
_)))))
(((<*>)
((<*>)
((pure @
((->)
_))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_))))
(<*>))
((pure @
((->)
_))
(pure @
((->)
_))))
((<*>)
((<*>)
((pure @
((->)
_))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_))))
(<*>))
((pure @
((->)
_))
(pure @
((->)
_))))
((<*>)
(pure @
((->)
_))
(pure @
((->)
_))))))
(((<*>)
((<*>)
((pure @
((->)
_))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_))))
(<*>))
((pure @
((->)
_))
(pure @
((->)
_))))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
((<*>)
((<*>)
((pure @
((->)
_))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_))))
(<*>))
((pure @
((->)
_))
(pure @
((->)
_))))))))))
((((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
(((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
(<*>))
(((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
(<*>)
(pure @
((->)
_))))
((((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
(((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
(<*>))
(((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
(<*>)
(pure @
((->)
_))))
((((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
(((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
(<*>))
(((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
(<*>)
(pure @
((->)
_))))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))))
(((<*>)
((<*>)
((pure @
((->)
_))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_))))
(<*>))
((pure @
((->)
_))
(pure @
((->)
_))))
(u
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_))))
(u
(((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
(((<*>)
((<*>)
((pure @
((->)
_))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_))))
(<*>))
((pure @
((->)
_))
(pure @
((->)
_))))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
(((<*>)
((<*>)
((pure @
((->)
_))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_))))
(<*>))
((pure @
((->)
_))
(pure @
((->)
_))))
((<*>)
((<*>)
((pure @
((->)
_))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_))))
(<*>))
((pure @
((->)
_))
(pure @
((->)
_))))))
(((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
(((<*>)
((<*>)
((pure @
((->)
_))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_))))
(<*>))
((pure @
((->)
_))
(pure @
((->)
_))))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
(((<*>)
((<*>)
((pure @
((->)
_))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_))))
(<*>))
((pure @
((->)
_))
(pure @
((->)
_))))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))))
(((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
(((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
(((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
(((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
(((<*>)
((<*>)
((pure @
((->)
_))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_))))
(<*>))
((pure @
((->)
_))
(pure @
((->)
_))))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
(pure @
((->)
_)))
(((<*>)
((<*>)
((pure @
((->)
_))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_))))
(<*>))
((pure @
((->)
_))
(pure @
((->)
_))))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
((<*>)
(pure @
((->)
_))
(pure @
((->)
_)))))
(((<*>)
((<*>)
((pure @
((->)
_))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_))))
(<*>))
((pure @
((->)
_))
(pure @
((->)
_))))
((<*>)
((<*>)
((pure @
((->)
_))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_))))
(<*>))
((pure @
((->)
_))
(pure @
((->)
_))))
((<*>)
(pure @
((->)
_))
(pure @
((->)
_))))))
(((<*>)
((<*>)
((pure @
((->)
_))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_))))
(<*>))
((pure @
((->)
_))
(pure @
((->)
_))))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
((<*>)
((<*>)
((pure @
((->)
_))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_))))
(<*>))
((pure @
((->)
_))
(pure @
((->)
_))))))))))
(((<*>)
((<*>)
((pure @
((->)
_))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_))))
(<*>))
((pure @
((->)
_))
(pure @
((->)
_))))
(u
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_))))
(u
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
(((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
(((<*>)
((<*>)
((pure @
((->)
_))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_))))
(<*>))
((pure @
((->)
_))
(pure @
((->)
_))))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
(((<*>)
((<*>)
((pure @
((->)
_))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_))))
(<*>))
((pure @
((->)
_))
(pure @
((->)
_))))
((<*>)
((<*>)
((pure @
((->)
_))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_))))
(<*>))
((pure @
((->)
_))
(pure @
((->)
_))))))
(((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
(((<*>)
((<*>)
((pure @
((->)
_))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_))))
(<*>))
((pure @
((->)
_))
(pure @
((->)
_))))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
(((<*>)
((<*>)
((pure @
((->)
_))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_))))
(<*>))
((pure @
((->)
_))
(pure @
((->)
_))))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))))
(((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
(((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
(((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
(((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
(((<*>)
((<*>)
((pure @
((->)
_))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_))))
(<*>))
((pure @
((->)
_))
(pure @
((->)
_))))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
(pure @
((->)
_)))
(((<*>)
((<*>)
((pure @
((->)
_))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_))))
(<*>))
((pure @
((->)
_))
(pure @
((->)
_))))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
((<*>)
(pure @
((->)
_))
(pure @
((->)
_)))))
(((<*>)
((<*>)
((pure @
((->)
_))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_))))
(<*>))
((pure @
((->)
_))
(pure @
((->)
_))))
((<*>)
((<*>)
((pure @
((->)
_))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_))))
(<*>))
((pure @
((->)
_))
(pure @
((->)
_))))
((<*>)
(pure @
((->)
_))
(pure @
((->)
_))))))
(((<*>)
((<*>)
((pure @
((->)
_))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_))))
(<*>))
((pure @
((->)
_))
(pure @
((->)
_))))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
((<*>)
((<*>)
((pure @
((->)
_))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_))))
(<*>))
((pure @
((->)
_))
(pure @
((->)
_))))))))
(u
(((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
(((<*>)
((<*>)
((pure @
((->)
_))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_))))
(<*>))
((pure @
((->)
_))
(pure @
((->)
_))))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
(((<*>)
((<*>)
((pure @
((->)
_))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_))))
(<*>))
((pure @
((->)
_))
(pure @
((->)
_))))
((<*>)
((<*>)
((pure @
((->)
_))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_))))
(<*>))
((pure @
((->)
_))
(pure @
((->)
_))))))
(((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
(((<*>)
((<*>)
((pure @
((->)
_))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_))))
(<*>))
((pure @
((->)
_))
(pure @
((->)
_))))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
(((<*>)
((<*>)
((pure @
((->)
_))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_))))
(<*>))
((pure @
((->)
_))
(pure @
((->)
_))))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))))
(((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
(((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
(((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
(((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
(((<*>)
((<*>)
((pure @
((->)
_))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_))))
(<*>))
((pure @
((->)
_))
(pure @
((->)
_))))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
(pure @
((->)
_)))
(((<*>)
((<*>)
((pure @
((->)
_))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_))))
(<*>))
((pure @
((->)
_))
(pure @
((->)
_))))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
((<*>)
(pure @
((->)
_))
(pure @
((->)
_)))))
(((<*>)
((<*>)
((pure @
((->)
_))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_))))
(<*>))
((pure @
((->)
_))
(pure @
((->)
_))))
((<*>)
((<*>)
((pure @
((->)
_))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_))))
(<*>))
((pure @
((->)
_))
(pure @
((->)
_))))
((<*>)
(pure @
((->)
_))
(pure @
((->)
_))))))
(((<*>)
((<*>)
((pure @
((->)
_))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_))))
(<*>))
((pure @
((->)
_))
(pure @
((->)
_))))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_)))
((<*>)
((<*>)
((pure @
((->)
_))
((<*>)
((pure @
((->)
_))
(<*>))
(pure @
((->)
_))))
(<*>))
((pure @
((->)
_))
(pure @
((->)
_)))))))))))))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment