[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