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

Reply via email to