On 05/15/2013 04:54 AM, Jamie Bullock wrote:
On 15 May 2013, at 00:42, Tom Schouten<t...@zwizwa.be> wrote:
Faust is amazing. it can compile to many different end targets and even has
it's own IDE in FaustWorks. Also, Albert Graf has embedded it (of sorts) into
Pd already (via Pure). very powerful combo. the language itself is a little
mathematical, finicky and technically minded though.
I really like the idea behind Faust, and I made sure that this idea can be used
on top of what I am writing. Faust is already a stateless operator/combinator
language, so very close to what I have in mind.
That combinator approach used in Faust can work well for high level composition, though
after working a lot with such style of languages (though more Forth-like) I no longer
think combinators are a good basic substrate for low-level work. They can be very
powerful and succinct, but are indeed finicky to work with, and produce hard to read
code. Overall I prefer a more direct "applicative style" ie. named variables
for input and possibly output.
If you don't like FAUST's functional semantics, there is also Poing Impératif
https://github.com/kmatheussen/poing-imperatif
Paper: http://users.notam02.no/~kjetism/poingimp_lac2011.pdf
Thanks for the link. Seems a lot of interesting things happening in
Faust land since I last looked.
Maybe to clarify a bit, since I do not want the point to be missed that
I like the functional semantics. That part is a really great idea.
I'm saying that instead of "process1 = +", i prefer "process2(a,b) = a
+ b", meaning explicitly named variables.
It's easier to build process1 style notation on top of process2 style,
instead of the other way around:
it's easier to drop local variables than to re-introduce them.
The process1 approach works well and can be very powerful once things
are properly abstracted, but when you are working with low-level issues
like approximation, interpolation, ... there tend to be more magic
parameters involved, which is harder to work with if you have to
implicitly keep track of where they are at. Similar to stack juggling
in Forth-like languages.
However, it seems use of local variables is possible in Faust using the
"with" form so I'm not sure to what extent my process1/2 remark actually
matters. It does seem possible to have the best of both worlds in Faust.
Is "with" in Faust a recent addition, or was it there from the start?
Tom
--
dupswapdrop -- the music-dsp mailing list and website:
subscription info, FAQ, source code archive, list archive, book reviews, dsp
links
http://music.columbia.edu/cmc/music-dsp
http://music.columbia.edu/mailman/listinfo/music-dsp