[kepler-dev] Re: Fun with the Ptolemy II expression language
Tobin Fricke
tobin at splorg.org
Wed Aug 4 23:10:06 PDT 2004
On strings, '+' does concatenation:
>> "foo" + "bar"
"foobar"
This gives us a "poor man's printf" using 'sum':
>> sum({"foo", "bar"})
"foobar"
(It seems that this is incredibly slow for large arrays of strings.. maybe
some clever check for {string} could use an alternate implementation of
'sum' that would use a StringBuffer for better efficiency?)
The 'toString' method is also exposed, although I think it will get called
implicitly in almost any circumstance where you'd want to use it. You can
even call a method on a literal:
>> 4.toString
"4"
I can use the "poor man's sprintf" trick to turn an array of records
{{x=double,y=double,z=double}} into a command for gnuplot:
>> gnuplotify = function(x:{{x=double,y=double,z=double}})
("splot '-'\n" + sum(map(function(tuple:{x=double,y=double,z=double})
sum({tuple.x, " ", tuple.y, " ", tuple.z, "\n"}),x)) + "e\n")
>> gnuplotify({{x=0,y=0,z=0},{x=0,y=1,z=2},{x=1,y=0,z=1},{x=1,y=1,z=1.5}})
"splot '-'
0 0 0.0
0 1 2.0
1 0 1.0
1 1 1.5
e
"
The 'workflows/orb/GnuplotSurfaceDemo.xml' model I just comitted to Kepler
CVS combines the grid forming trick with the gnuplot trick to plot an
arbitrary function of two variables.
tobin
More information about the Kepler-dev
mailing list