[challenge] Limitation in D's metaprogramming

Jonathan M Davis jmdavisProg at gmx.com
Mon Oct 18 18:02:58 PDT 2010


On Monday, October 18, 2010 17:54:50 Nick Sabalausky wrote:
> "Jonathan M Davis" <jmdavisProg at gmx.com> wrote in message
> news:mailman.715.1287449256.858.digitalmars-d at puremagic.com...
> 
> > One word: monads.
> > 
> > Now, to get monads to work, you're going to have to be fairly organized
> > about
> > it, but that would be the classic solution to not being able to have or
> > alter
> > global state and yet still be able to effectively have global state.
> 
> Oh yea, I've heard about them but don't have any real experience with them.
> Any FP experts know whether or not monads are known to be constructible
> from purely-FP building blocks? I always assumed "no", and that monads
> really just came from a deliberate compiler-provided hole in the whole
> purity thing, but maybe I'm wrong? (That would be quite interesting:
> constructing impurity from purity.)

You can think of a monad as an extra parameter which is passed to each function 
and holds the global state. It isn't a hole in purity at all. For instance, it's 
how Haskell manages to have I/O and yet be functionally pure. You don't need the 
compiler's help to do monads - it's just easier if you have it.

- Jonathan M Davis


More information about the Digitalmars-d mailing list