Luna brings visual development to functional programming

Developers typically start sketching components and dependencies on a whiteboard before coding, so Luna’s creators argue that it doesn’t make sense to then implement that logic only in text

Luna brings visual development to functional programming
REUTERS/Athit Perawongmetha

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.

Expected to be released as open source when Luna reaches beta, its compiler will produce native code for the developer’s choice of Linux, MacOS, Windows, or JavaScript. The team behind Luna is seeking candidates for a private alpha release.

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:

  • parallelism
  • 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

Luna will also support language interoperability, with developers able to create a “foreign” node and paste in Python or Haskell code. Interoperability with JavaScript and C++ is planned as well. But Luna’s creators caution that other languages were not designed with visual representation in mind, so their source code cannot be represented graphically like Luna code can.