[chuck-users] how to mickey-mouse a 'switch' statement into chuck?

Spencer Salazar spencer at ccrma.stanford.edu
Mon Oct 12 14:41:29 EDT 2015


Doing functional stuff in ChucK can be pretty fun (and verbose), but for
specifically switch-case structures, mostly these can be implemented e.g. as

if(var == 0) // case 0:
{ }
else if(var == 1) // case 1:
{ }
else // default:
{ }

You can't do fall-throughs or nutty things like Duff's device, but (making
up a number) maybe 90% of switch-case uses I see are basically a slightly
better-looking if-else. Are you doing something more elaborate than
branching on the value of a specific variable?

spencer


On Mon, Oct 12, 2015 at 2:22 PM, Forrest Curo <treegestalt at gmail.com> wrote:

> It looks far prettier than a mess of logical spaghetti!
>
> But is this documented with examples for the help & understanding of
> object-challenged geezers from the days of punch-card boxes converted
> twice/day to error-message listings?
>
> On Mon, Oct 12, 2015 at 10:37 AM, Michael Heuer <heuermh at gmail.com> wrote:
>
>> Forrest Curo <treegestalt at gmail.com> wrote
>>
>>> Since switches have so far not been included, is there a way around this?
>>>
>>> An array of Events?
>>>
>>> An array of functions, either numbered or associative? How to declare
>>> and call such an array?
>>>
>>
>> ChucK doesn't have function pointers or similar, so I've resorted to
>> functors
>>
>> https://github.com/heuermh/lick/blob/master/lick/fn
>>
>> E.g.
>>
>> class DoSomething extends Procedure {
>>   fun void run() { ... }
>> }
>> class DoSomethingElse extends Procedure {
>>   fun void run() { ... }
>> }
>>
>> DoSomething doSomething;
>> DoSomethingElse doSomethingElse;
>>
>> ArrayList procedures;
>> procedures.add(doSomething);
>> procedures.add(doSomethingElse);
>>
>> while (true) {
>>   procedures.sample() $ Procedure @=> Procedure procedure;
>>   procedure.run();
>>   1::second => now;
>> }
>>
>>
>> Yeah, it ain't pretty.
>>
>>    michael
>>
>> _______________________________________________
>> chuck-users mailing list
>> chuck-users at lists.cs.princeton.edu
>> https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
>>
>>
>
> _______________________________________________
> chuck-users mailing list
> chuck-users at lists.cs.princeton.edu
> https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
>
>


-- 
Spencer Salazar
Doctoral Candidate
Center for Computer Research in Music and Acoustics
Stanford University

spencer at ccrma.stanford.edu
+1 831.277.4654
https://ccrma.stanford.edu/~spencer/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cs.princeton.edu/pipermail/chuck-users/attachments/20151012/ffa3bcb2/attachment-0001.html>


More information about the chuck-users mailing list