Various C# experimentations
Short summaries: CoRecursion: Generalized corecursive static variables via simulating multiple static constructors (ie. delayed initializers). Fix: Test using self-inheritance for fixed points of constructors, and how to easily derive Nat and Tree using this method. FreeMonads: (UNSAFE) Early experiment using boxed free monads Contains a small example of how to build sequential language representations. Containts Haskell code for comparison. Functors: (UNSAFE) Early experiment demonstrating mu morphisms. Contains examples of mu-nats and mu-lists as well as a factorial function using these. Contains Haskell code for comparison. InfEnumerable: Demonstration using Free (,) “finalized lists” as well as how to use a bottom type to statically ensure it to be infinite. Contains Haskell code for comparison. MonadDict: Demonstration of reifying dictionaries to write polymorphic code. This doubles as a safe and usable implementation of monads. SumTypes: Experiment of using inheritence for sum types, not too great since it doesn't prohibit further descendants of the type, and doesn't allow impredicative polymorphism (eg. Nothing :: forall a. Maybe a). Prelude: A tiny collection of useful types for future use: Monad/Functor dicts, Sum/Product types as well as 1 and 0.