+1 

That sounds pretty cool!

It seems to indicate perhaps the concept that the { } block could really be shorthand for an unnamed function.  Thus, this would also be possible:

{
...
} => fun void myFun;

or even declare here, assign there, like so:

fun void myFun;

{
} => myFun;

the issue of return types is tricky…

you could, like in other languages use default to void, unless the block contained a return statement:

{
0 => int x;
}     // function returns nothing

{
0 => int x;
return x;
}     // function returns an integer

Somehow I doubt that the devs would be into this…  I think that this might add execution overhead and violate the principle of something-er-other.

But even just being able to assume that a code block could be sporked as a separate shred would be pretty awesome.  Still, being able to assign the shred to a variable name would be radical.  "function" is an unused reserved word, right?

{
<<< "hi" >>>;
} => function hi;

spork ~ hi;

Awesome.

-Mike



-- 
Michael Clemow

http://michaelclemow.com
http://abattoirprojects.com

On Thursday, December 6, 2012 at 8:29 PM, Tom Lieber wrote:

I like that alternative.


On Thu, Dec 6, 2012 at 7:26 PM, Spencer Salazar <spencer@ccrma.stanford.edu> wrote:
I think being able to spork a block of code like this:

spork ~ {
// some code
}

spork ~ {
// some other code
}

would, to a lesser but still helpful degree, alleviate the issues this proposal is trying to address. It also has the benefit of recombining existing syntax rather than introducing new syntax. 

spencer



On Tue, Dec 4, 2012 at 6:58 AM, Tom Lieber <tom@alltom.com> wrote:
So you could write this:

  TubeBell b => dac;
  ---
  while(40::ms => now) {
      1 => b.noteOn;
      1600::ms => now;
      1 => b.noteOff;
  }
  ---
  do {
      Std.mtof(Std.rand2(0, 3) + 60) => b.freq;
  } while(1640::ms => now);

and have it work like this:

  TubeBell b => dac;

  fun void part1() {
      while(40::ms => now) {
          1 => b.noteOn;
          1600::ms => now;
          1 => b.noteOff;
      }
  }

  fun void part2() {
      do {
          Std.mtof(Std.rand2(0, 3) + 60) => b.freq;
      } while(1640::ms => now);
  }

  spork ~ part1();
  spork ~ part2();
  day => now;

--
Tom Lieber
http://AllTom.com/
http://infinite-sketchpad.com/

_______________________________________________
chuck-dev mailing list
chuck-dev@lists.cs.princeton.edu
https://lists.cs.princeton.edu/mailman/listinfo/chuck-dev



_______________________________________________
chuck-dev mailing list
chuck-dev@lists.cs.princeton.edu
https://lists.cs.princeton.edu/mailman/listinfo/chuck-dev




--
Tom Lieber
http://AllTom.com/
http://infinite-sketchpad.com/
_______________________________________________
chuck-dev mailing list
chuck-dev@lists.cs.princeton.edu
https://lists.cs.princeton.edu/mailman/listinfo/chuck-dev