// name: eval.ck // desc: use Machine.eval() to compile and run code from a string; // this as enables chuck to generate code to run at run-time; // powerful! perilous! // // version: requires chuck-1.5.0.5 or higher // Machine.eval() was first introduced in 1.5.0.0; // the operation semantics was changed in 1.5.0.5 for // Machine eval to run immediately, and automatically // yielding the current shred to give the eval'ed code // a chance to run -- all this without advancing time // // uncomment this to print out info about Machine: // Machine.help(); // // date: Spring 2023 // our code to run "cherr <= \"hello!\" <= IO.newline();" => string codeStr; // compile the string as code and spork it as a new shred if( !Machine.eval( codeStr ) ) <<< "error evaluating code!", "" >>>; // each of these will be evaluated and run as code, // each on its independent shred; Machine.eval() automatically // yields the originating "evaluator" shred, giving the evaluated // code a chance to run without advancing time Machine.eval( "<<< 1 >>>;" ); <<< "a" >>>; Machine.eval( "<<< 2 >>>;" ); <<< "b" >>>; Machine.eval( "<<< 3 >>>;" ); <<< "c" >>>;