Hi Sterling Paramore, thank you for your comment! I’ve been working with and extending visual languages my whole life (mainly VFX domain) and I completely understand these pains. That is why we have designed Luna to provide a “visual syntax”, not a “visual overlay over some code / predefined functionality”. The visual syntax in Luna is equivalent to it’s textual syntax — both translate to internal AST by the compiler. In other words, if you are able to write something in code, you are able to do it visually. If you combine it with the fact that Luna is a purely functional, general purpose language with non-strict semantics, you’ve got a “true visual language”, not just “a gui to connect components”.
Regarding your questions:
- A very basic library for testing (written in Luna) exists right now. Any help with making it better is highly appreciable.
- Could you please elaborate more on this question? I am not sure I understood it properly.
- Just like any other language — it does not unless you use a library that knows how to handle it.
- Luna can currently natively speak with Haskell libraries, thought creating bindings it is a little tricky at the moment (but not very much). We’ve described it here: https://discuss.luna-lang.org/t/how-to-connect-to-hs-code-without-ffi/78/3 ). We will support easy FFI for C, Haskell and JS in near future (more languages to come). By easy FFI I mean that you would be able to just provide a function name and the binding would be almost automatically generated for you. So if you want to bind Luna to anything that already has public API in Haskell / C / etc, you could do it pretty easily. You can also write it from scratch purely in Luna.
- We’ve got a streaming library included among standard Luna libraries. I’m not sure it supports RabbitMQ or Kafka currently. The best way to ask these questions is to use our forum or chat. If Luna will not support it, we would love to guide you how to do it from scratch! http://chat.luna-lang.org .
- Please, see point 5.
Did I answer your questions?