Described by the creators as a developer’s whiteboard “on steroids,” the Luna functional language promises to enable application assembly by clicking and dragging visual elements together.
Luna’s creators argue that because developers typically start sketching components and dependencies on a whiteboard before coding, it doesn’t make sense to then implement that logic only in text. Software can have thousands of lines of code distributed in hundreds of files, which can trip up the implementation of that visual data flow and application architecture. Tools such as UML architecture diagrams only deal with the symptoms and not the problem’s source, Luna’s creators argue.
That’s why Luna features both visual and textual representations. Developers can maintain their coding habits while also having a graphical whiteboard-like interface.
Luna’s visual representations reveal structure, behavior, and data flow. It allows prototyping and visual profiling to understand performance bottlenecks. Luna gathers statistics including computation time, CPU/GPU memory allocation, network transfer, and threading model.
Other promised Luna capabilities include:
- higher order functions
- non-strict semantics
- user-defined algebraic types
- a monadic I/O system that includes a type checker and influencer that understand which functions are I/O actions and which are pure.
- data flow error-handling
- a strong dependent type system