[chuck-users] Functional Chuck?
Michael Heuer
heuermh at gmail.com
Sun Jun 8 16:38:25 EDT 2008
On Sun, Jun 8, 2008 at 3:33 PM, Michael Heuer <heuermh at gmail.com> wrote:
> mike clemow wrote:
>
>> Hey folks,
>>
>> Anyone else really wish that Chuck supported higher order functions???
>>
>> check it out. This doesn't work, but i'd love for it to work:
>>
>> // a function that returns an int
>> fun int fn( int n ) {
>> return n + 3;
>> }
>>
>> // a function that takes a function and an array of ints
>> // and returns an array of ints which correspond to the action
>> // of that function on each int in the original array
>> fun int[] mapInt( function fn, int list[] ) {
>> int results[list.cap()];
>> for( 0 => int i; i < list.cap(); i++ ) {
>> fn( list[i] ) => results[i];
>> }
>> return results;
>> }
>>
>> [1, 2, 3, 4, 5] @=> input;
>>
>> Add3 add3;
>>
>> mapInt( add3, input ) => int output[];
>>
>> <<< output[2] >>>; // should print 6
>>
>> --
>>
>> I just wish that functions could take other functions as parameters
>> and return functions as their return value. I think that would make
>> sense. Functions, I find are more powerful than classes in Chuck.
>>
>> Also, why is "function" a keyword?
>>
>> cheers,
>> mike
>
> Hello Mike,
>
> You can do this with functors, small classes that are functions.
> There is a thread on the forum with some example code, but it is
> basically just
>
> class Function
> {
> fun int doIt(int n) { ... }
> }
>
> fun void int[] mapInt(Function f, int list[]) { ... }
>
> michael
>
Said thread
http://electro-music.com/forum/topic-23546.html
michael
More information about the chuck-users
mailing list