On Fri, 4 Feb 2011, Stephen Sinclair wrote:
Anyways, due to the field I work in, one subject area I find myself obsessed with is the seeming conflicts of interest between functional programming and real-time guarantees (for writing DSP programs, etc). The former allows more powerful ways to express programs and modularize logic, but seems to often require methods for abstracting machine architecture such as garbage collection, which is not compatible with time determinism. Avoiding GC seems to require the use of more restrictive languages like in the case of FAUST, which is basically a declarative DSP description language. I'd like to eventually find just the right balance between time determinism and general-purpose programming.
FAUST is essentially like Arrow programming in Haskell. I prefer Arrows in Haskell because they are stricter. E.g. in FAUST you can plug together boxes with non-matching numbers of inputs and outputs and FAUST somehow connects them anyway. I suspect I would more like to get an error in such cases.
In synthesizer-llvm I programmed DSP arrows that generate LLVM assembly code. There is no Garbage Collection going on silently. It should be appropriate for tasks with hard time and memory constraints. Actually, Haskell with the 'llvm' package is the greatest macro assembler I ever used! :-)
_______________________________________________ haskell-art mailing list [email protected] http://lists.lurk.org/mailman/listinfo/haskell-art
