Erik Meijer a very engaging person! If I recall correctly, he spearheaded the Linq project for C# back in mid-2000s.<p>In particular, I suggest his Haskell lectures to anyone interesting by theoretical aspects of functional programming. <a href="https://channel9.msdn.com/Series/C9-Lectures-Erik-Meijer-Functional-Programming-Fundamentals/Lecture-Series-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-1" rel="nofollow">https://channel9.msdn.com/Series/C9-Lectures-Erik-Meijer-Fun...</a>
In case people were wondering, the haskell stdlib answer to his interview question is at <a href="https://hackage.haskell.org/package/transformers-0.5.2.0/docs/src/Control.Monad.Trans.Cont.html#ContT" rel="nofollow">https://hackage.haskell.org/package/transformers-0.5.2.0/doc...</a> (ContT is a generalized form which lets people run, for example, computations that involve IO). Though explaining it is still the fun part.
I know it's easy (and fun) to hate on Microsoft, but damn do they employ some great engineers/researchers: Erik Meijer, Anders Hejlsberg, Simon Peyton Jones, etc..
Can anyone help me interpret the type signature Meijer used in his programming question? "Given a generic type:<p><pre><code> Cont r a = (a -> r) -> r
</code></pre>
Prove that this type forms a monad."<p>I'm reading it as 'Container' passed 'r' and 'a' performs 'a' to 'r' which returns 'r'. (I'm guessing on verbs here)..<p>I've never come across a good way to read these type signatures.
> ... prove that this type forms a monad.<p>How do I “prove” a type forms a monad? I only have to implement `lift` and `bind` with the correct behavior, and I have a monadic interface. Did I prove then that the type forms a monad?
While I agree with this point:<p>> Good developers understand that they can't do everything, and they know how to leverage tools as prosthetics for their brains.<p>it can also become a distracting fetish.