Skip to main content

You are not logged in. Your edit will be placed in a queue until it is peer reviewed.

We welcome edits that make the post easier to understand and more valuable for readers. Because community members review edits, please try to make the post substantially better than how you found it, for example, by fixing grammar or adding additional resources and hyperlinks.

Required fields*

16
  • 4
    Of interest: Encoding algebraic data types in C# Commented Aug 7, 2012 at 8:35
  • 3
    C# is OOP language. Solve problems using OOP. Don't try using any other paradigm. Commented Aug 7, 2012 at 14:11
  • 7
    @Euphoric C# has become a quite usable functional language with C# 3.0. First-class functions, built-in common functional operations, monads. Commented Aug 7, 2012 at 19:00
  • 2
    @Euphoric: some domains are easy to model with objects and hard to model with algebraic data types, some are the opposite. Knowing how to do both gives you more flexibility in modeling your domain. And like I said, mapping algebraic data types to typical OO concepts is not that complex: the data type becomes an abstract base class (or an interface, or an abstract trait), the data constructors become concrete implementation subclasses. That gives you an open algebraic data type. Restrictions on inheritance give you a closed algebraic data type. Polymorphism gives you case discrimination. Commented Aug 8, 2012 at 14:14
  • 3
    @Euphoric, paradigm, schmaradigm, who cares? ADTs are orthogonal to the functional programming (or OOP or whatever else). Encoding an AST of any language is quite a pain without decent ADTs support, and compiling that language is a pain without another paradigm-agnostic feature, pattern matching. Commented Sep 7, 2012 at 17:53