A newly released open source project wants to transform how data is gathered, understood and manipulated. Luna is visual and textual functional programming language created by Wojciech Danilo and Marcin Kostrzewa.
“Luna is a general purpose, purely functional programming language incorporating many recent innovations in programming language design, such as higher-order functions, non-strict semantics, algebraic data types, object oriented programming and sophisticated type inference engine. All that enclosed in an expressive textual syntax that is natural to read and write,” according to its website.
It is a data processing and visualization platform that provides an ever-growing library of domain specific components and an extensible framework. The areas of focus for Luna include machine learning, data science, IoT, bioinformatics, graphic design and architecture.
“A well-designed domain-specific language, or a language in general, empowers people with the ability to both express their thoughts in a rapid and concise way as well as understand the feedback response easily. It is especially important to research because it directly affects how fast you can iterate — test new ideas and understand intermediate results. Fast iterations make it possible to test a wider range of parameters including those that should not work at first glance, allowing you to much better understand the domain you are investigating. Thus the language design directly affects not only the total time needed to solve a problem in a non-linear way, it often is the key to find the solution at all,” Danilo wrote in a blog post.
One of the three main concepts of Luna is its data visualization and manipulation data capabilities that leverages interactive and extensible WYSIWYG components. This provides an easier way to define new components while modifying existing ones and sharing them within the community, according to the team.
The second concept is a data flow graph, which allows users to rewire components or insert new ones. The third concept is the nested data flow graphs and code representation capabilities, which provides users the ability to switch between representations.
“Luna was designed as a unified environment for building and hosting visually rich domain-specific languages,” wrote Danillo. “It blurs the boundaries between domains, allowing tools from different fields to seamlessly communicate and coexist.”
Other features include WYSIWYG data processing, a hierarchical design, visual debugging and profiling, and a context-aware search engine.