Dataflow languages are what I'm most interested in these days when it comes to programming languages and I've always liked the symmetry between concatenative languages and pure dataflow languages (visual ones or just stream/flow based textual languages).
I've also been doing a lot of Max/MSP programming lately and really love working in its "passing messages along patch cables" system, but am frustrated by its lack of higher order objects and lack of aggregate data types (hell, it won't even let me create a list of lists).
What I really want is a Max/Pd-like language with richer set of data types (algebraic types with pattern matching would be a good start) which can be trivially and unambiguously converted between visual and textual representations. A concatenative language may make this a lot easier.
I think you’re really going to like Prog, then. It’s concatenative but focused on ADTs and pattern matching. Abstraction is easy thanks to quotation. I have some neat ideas in mind for an editor, as well, that would do just what you say—display a flow diagram of a program or selection as you edit. Concatenative languages are indeed, as the bland Wikipedia article puts it, “highly amenable to algebraic manipulation” of this sort.
It's an applicative language created especially for audio DSP. It seems to bridge the gap you describe by providing dataflow combinators and a graphical representation for programs.
I've also been doing a lot of Max/MSP programming lately and really love working in its "passing messages along patch cables" system, but am frustrated by its lack of higher order objects and lack of aggregate data types (hell, it won't even let me create a list of lists).
What I really want is a Max/Pd-like language with richer set of data types (algebraic types with pattern matching would be a good start) which can be trivially and unambiguously converted between visual and textual representations. A concatenative language may make this a lot easier.