On Thursday, 18 April 2013 at 13:04:19 UTC, Graham Fawcett wrote:
On Sunday, 14 April 2013 at 23:52:37 UTC, Idan Arye wrote:

Now, I've got it working(the example actually compiles and prints "less then 5"), and I want to make a pull request to put it in Phobos(because it's a useful function) but I don't really know where to put it. None of the existing modules seems fit, and I don't want to open a new module(std.monad?) for a single function.

Nit-picky observation: there's nothing monadic about your predSwitch function, it wouldn't belong in a 'std.monad' module.

Best,
Graham

A monad is "a structure that represents computations"(quote from Wikipedia). While the Turing machine branch(=the main branch) of computability theory quickly fell into the Turing tarpit and had to moved to pseudo-code, the Lambda calculus was expended using the traditional mathematical method of defining symbols that replace other symbols.

That's why when in the Turing machine branch you could just write `if ... then ... else ...` and it's okay because it's pseudo-code, in Lambda calculus you actually have an IFTHENELSE defined as a lambda expression. And so on with loops, exception handling, and even type definitions and input/output.

I find that `predSwitch` - a function that represents the `switch` idiom - perfectly fits into the definition of monads.

Reply via email to