On 4 Sep 2010, at 01:27, Kassen wrote:
I would really like to see that the language design is seriously reworked and all kinds of syntactic sugar introduced - especially lambdas and better forms of iterators.
What would you use a lambda for, concretely? What kind of iterator?
I do -for example- see a issue with how we can't some things to arrays without knowing their type. For example; you could randomise or reverse the order of elements in a array without knowing it's type as that wouldn't matter, but ChucK doesn't permit this. I feel that's more of a issue of arrays and the type-system than a lack of - say- (map) and (lambda).
In the past few weeks I wrote quite a bit of Scheme; I'm certainly not opposed to lambda or to iterating in some quite specific way that fits the current context and aim, but I still wonder how things like that would be used concretely in ChucK.
There is Haskore for Haskell, by which one can write structured scores, sort of: http://haskell.org/haskellwiki/Haskore I haven't used it, but it got me interested into developing a microtonal interval model. Haskell is good for such prototyping, in view of it OO type-system. The lambda makes code very succinct. It is not having a type system that is causing problems, but that it often is a bit underdeveloped. For example, if one wants dynamic typing, that can be done by having a type by which the other types can be derived dynamically. Then the problems like the one above cane be done by introducing a new type. Such problems show in Haskell, which uses a Hindley-Milner type system, where the idea is that the type of an expression can be compute via unification. So it does not have the function name overloading one is used to in C++ and derivatives. Also, Haskell uses lazy evaluation as default, which is incompatible with imperative structures, leading complicated ways of doing such programming, which would not be suitable for Chuck.