On 10 Jan 2010, at 23:47, mike clemow wrote:
I see, yes. Would this essentially give us something like a dynamically typed Chuck? I would love that... but I think that we're going to get serious resistance from the devs on this one. I think you're right, though. If we had a better type system, then none of this kind of stuff would be such a hurdle to get over.
No - Haskell is statically typed. And so are the C++ templates.
I personally, really appreciate what LiCK does for Chuck, but I think it's a lot of boiler plate to write, when having a more flexible language implementation / type system would allow us to avoid all that.
If one wants to implement libraries, it is nice to have some kind of polymorphy. So I think that might be the hurdle. As for a lambda calculus, that would be nice, and ChucK does not need something advanced. One needs to decide on an evaluation model. Scheme uses applicable order - evaluate arguments first, and then expand the lambda expression. The other way around is normal order, which may be better with infinite and imperative structures. Haskell uses as default lazy evaluation, which means that arguments are only evaluated to the extent needed and intermediate results can be cached. This is wholly incompatible with imperative structures, so Haskell uses the complicated construct of monads to handle that via the type system. Nothing for ChucK which is so imperative. But one can also call for strict evaluation, same as in C/C++ and I gather ChucK and perhaps the same as the applicable order above. So one can have more than one evaluation model. Hans