Re:Show HN: YinYang, a usable live programming language
by keyle on Saturday October 19, 2013 @09:57PM
(#6578713)
Glad we're on the same page. I think.
So state would be dealt with in a similar approach than the command pattern?
Sounds exciting.
I guess where I come from is the scare when a pure function gets littered with impurity much later on, and all we have to warn us is a unit test. No matter how big the comment is above the method, nothing stops a developer from sticking a global variable in it, and it's out the window.
This forces code reviews to be lengthy, etc. If on the other hand we had a @pure section and @everything_else section, I feel this would make things easier to reason about... We could also measure the % of pure vs non-pure code, as code quality. All of this in an object oriented language of course. I'm no fan of Haskell.
Re:Show HN: YinYang, a usable live programming language
by seanmcdirmid on Saturday October 19, 2013 @10:08PM
(#6578729)
You might want to check out Koka [1], which includes an effect system to separate pure and effectful computation. I believe there is also a demo of it online [2].
Re:Show HN: YinYang, a usable live programming language
by Sirex on Tuesday October 22, 2013 @01:45AM
(#6589975)
What you mean is a non-deterministic programming language?
Similar to SICP 4.3? But different and expanded?
http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-28.html...
Code where expressions has success and failure paths, where the failure simply is reversal?
> Separating the grok of the code from the state eventually helps. And sadly there is little research spent in there, which is direct value to developers.
I would argue that there is plenty of research in this direction in the functional programming community. This is what monads seem to be about, at any rate. The problem is that developers don't want to adopt these solutions because they are way too inconvenient or even unworkable from an expressiveness standpoint. So maybe we should look for a better way to temper state without throwing it into a ghetto...
> I am amazed with what you can do though. I've had my shot at designing a language and miserably failed multiple times... But this why I'm raving about it... You may be able to solve this global problem that I never could.
We will see; I went through my purity stage relatively early and am being extremely pragmatic these days. The secret sauce in my current approach is to have state, but limit how it can be updated: operations in Glitch must be undoable and commutatively ordered, which are huge restrictions but the result is very compelling (re-execution is possible AND re-execution can occur in arbitrary orders).