4 ms·
Cool! I'm also working on a visual functional language conceptually similar Haskell. I'm a founder of http://www.filterforge.com http://www.filterforge.com, and
by VladimirGolovin 11y ago
Cool! I'm also working on a visual functional language conceptually similar Haskell. I'm a founder of http://www.filterforge.com http://www.filterforge.com, and I want to develop a proper (i.e. Turing-complete, strongly typed with type inference, pure, lazily-evaluated) visual language for the next major rewrite of Filter Forge. Here's what I've been able to achieve so far:
A simple program (with equivalent Haskell and Racket code):
http://i.imgur.com/dsNJYyx.png http://i.imgur.com/dsNJYyx.png
List of strings, with element insertion GUI:
http://i.imgur.com/Re64IJE.png http://i.imgur.com/Re64IJE.png
A more complex program, a function definition, and some sugar for infix math:
http://i.imgur.com/KoxjoOM.png http://i.imgur.com/KoxjoOM.png
Fold using a lambda, with equivalent Haskell code:
http://i.imgur.com/avQNHXS.png http://i.imgur.com/avQNHXS.png
Complex signatures, polymorphism and typeclasses:
http://i.imgur.com/cZ4KMzt.png http://i.imgur.com/cZ4KMzt.png
- baibak 11y agoSo amazing! I was searching for such a thing, sadly it is not open source, but cool anyway.
- camelite 11y agoLink to code/binary for your visual programming language? It looks cool.
- VladimirGolovin 11y agoIt's really, really far from releasable code. The examples I posted are screenshots from my mockups (made in Excel). What we have now as actual working code is a visual editor that allows to connect nodes together, a typechecker that prevent connections between different types (and invalidates / blackens existing connections if they somehow go wrong), and multi-input / variadic nodes such as lists and tuples. It's not yet executable - you can't run the program in our visual environment yet, you can only construct / typecheck them. Also, we have a metric ton of unsolved problems: function definition and signatures, deconstruction of ADT values, definition of ADTs, preview of intermediate values for each node etc.) Based on what I see right now, it will take at least a year before we have anything resembling a proper language. Also, I predict that the runtime performance will be awful.
- fao_ 11y agoHm, I actually find the code samples easier to grok, probably because I have to spend more time looking for the important bits in the flowchart display than the text display. It is likely that it is because I spend more time parsing text, so I am more experienced at that than at parsing relevant information from flowcharts.
- VladimirGolovin 11y agoIn the example with take 3 (map (+7) (map negate [1,2,3,4,5,6,7,8])) (http://i.imgur.com/dsNJYyx.png http://i.imgur.com/dsNJYyx.png) I personally find the Haskell version the most readable of them all, then my visual version, and the Racket one the least readable.
- i336_ 11y agoCongratulations, you're now a member of the elite club of people who've (possibly accidentally? :P) made a subfeature so cool it needs to be a first-order thing in its own right. I'm sure you've seen all the back-and-forth on here about open-source vs. closed-source in programming languages and taken note of current trends. :D What I will say is that this looks very, very complete, and it would be a tiny shame to limit its awesomeness and usefulness just to Filter Forge. An as-is officially-alpha build of whatever produced those shiny screenshots would certainly go down very well.
- VladimirGolovin 11y agoThank you, that's very encouraging! The feature was not accidental. I always wanted to expand the possibilities of Filter Forge's nodal language, but until I met Haskell I didn't know how to do that. And now, after trying Haskell, it's simply impossible for me to think in terms of non-general, domain specific visual languages. The Haskell paradigm lends itself very well to a visual syntax, but there's a lot of problems to be solved, and that will be an excellent challenge for me in the coming years. Despite looking complete, it's really, really far from that. There are serious conceptual problems that remain unresolved yet. We do have a visual tool for constructing and typechecking programs, but it’s not yet ready for any release, even an as-is alpha. Actually, the screenshots I posted are my Excel mockups: http://i.imgur.com/WYeLJJr.png http://i.imgur.com/WYeLJJr.png As for the open-source / closed source, I spent some time thinking about that, and discussed the idea with the team, but we’re not ready to make the decision yet. On one hand, I'd be immensely pleased if our research on visual syntax for functional languages could be useful to the wide world. Functional programming really deserves wider adoption, and if our research can help that, I’d be very proud. Also, open-sourcing this may bring a lot of benefits to our commercial product, because it will allow us to access the global talent pool of functional programmers, who, collectively, have vastly more expertise than all our developers combined. I also think that many of these programmers are in academia, and would welcome a visual tool that could help them teach functional programming to their students. On the other hand, we, as a company, have absolutely no experience in starting and maintaining open-source projects, and we have no idea how to do that properly, and what resources will it require from us. I’ll have to read up on that.