JAX Innovation Awards 2014 Spotlight: Frege Language
An insight into the Frege Language – a project attempting to bridge a lingering gap among JVM languages by providing a type-safe, purely functional programming language.
Over the last month we’ve had many interesting and diverse nominations sent our way for the JAX Innovation Awards 2014, in the form of Most innovative Java Technology, Most innovative Open Technology, and Most innovative Open Tech Business. Now that Community voting has closed, all that’s left is to tally the results! Watch this space: we’ll be posting all the results on the site later this week. This interview is part of a special series showcasing our final nominees.
Category: Most innovative Java Technology
Technology: Frege Language
Interviewees: Ingo Wechsung
1) Could you tell our readers a little more about Frege?
The Frege project attempts to bridge a lingering gap among JVM languages by providing a type-safe, purely functional
programming language with a demand analysis (non -strict evaluation). The language scope and the type system correspond to Haskell in the year 2010, but with the addition of higher ranked types, whereas the FFI was replaced by special language features for integration with Java classes. Frege programmers can integrate existing JVM classes and interfaces as abstract data types, and use their methods as functions. In fact, Frege has no run-time system in the traditional sense. If required (eg IO, concurrency , etc.) it uses instead a suitable Java API. Also the elementary types such as int, string , etc. are borrowed from Java.
Due to this specialization to the JVM, there are some differences when compared to haskell, but the goal of an almost source compatibility with Standard Haskell was generally achieved. Complying to the good old Wirth-principle, Frege is written in Frege itself.
Currently, there are compilers , including a standard library, interpreter ( also online) , an Eclipse plugin and tools for testing (via QuickCheck ) , documentation, etc. It should also be known that Frege is the hobby project of a very small team , and not finished by far in any sense or even ” industry ready “. More energetic supporters would therefore be very welcome!
2) Can you explain what problems you solve with your technology?
Firstly, the problem is that Haskell is not able to run in a JVM environment. In the Haskell community, there are no current attempts in this direction – which is understandable to those within the project – although the question comes up again and again. Here we hope to provide a useful substitute, even if we may inevitably lag behind the development of the GHC, where they‘ve got ingenious people like Simon Peyton Jones or Edward Kmett on board.
Secondly, we offer an alternative for those who are not satisfied with “mostly functional programming “, or who, like Erik Meijer, are of the opinion that it will not work in the longer term.
In summary, I would say it’s less of this or that technological problem, that Frege will or can solve. I see it more as a kind of ” basic research” or as a practical proof that purely functional programming à la Haskell on the JVM is possible (which is often called into question ). Implications for Frege itself or other projects with similar goals are completely open, and will reveal themselves maybe only in a few years.
3) Who are your main users ?
If only I knew that! Unfortunately, you often get only indirect feedback via questions on stackoverflow , if something does not work. I suspect that the users are mainly based in universities, or are Hobby programmers. I suppose further that ( serious ) use of Frege is currently extremely manageable.
4) What’s on the roadmap ahead for you
Continuous development of the still very incomplete Standard Library, and building an infrastructure for standalone packages, alongside conservative evolution of the language, such as with multi- parameter type classes.
A greater challenge has come with Java 8 . On the one hand, we want Frege code to run on JDK6 (we know that people currently experiment with Frege and Android), on the other hand, Frege should be well integrated with Java 8 . Some work will be needed here in the near future. Furthermore, what we need are tutorials, how-tos, for beginners and migrators.
5) Why do you think Open Technologies are important for truly innovative IT?
For the same reason why science must be open to be called like that. Culture is the accumulation of knowledge , not a collection of patents of so-called “intellectual property”. The latter is just a political construct invented to create economic monopolies, which would not be viable in a free economy.
If someone makes use of his knowledge and skill in a rational market environment, then this will contribute to progress. If he is prevented from this because someone rushes to set the copyright owner and their patent attorneys on him, potential advances or even production of useful things cannot take place.