Closed viclib closed 3 years ago
Hello. Great questions, thanks for asking them.
Feel free to ask other questions if something is not clear from these explanations.
As for the first question about MTT. Supercompilation is a general method, while MTT is a quite specific technique/algorithm for fusing functions with accumulating parameters. It is a known fact that (classical/standard) supercompilers in general are not very good at transforming functions with accumulating parameters. However, we need to distinguish supercompilation as a method and some certain supercompiler as an instantiation of this method. A supercompiler may use additional techniques/tricks to tame specific problems. So, MTT may be incorporated into a certain supercompiler.
Wow, thank you. You just answered questions that have been bothering me for so long, and that completely sets a new path to my work. I was already aware of it, but in the next days I will be exploring TT Lite further. I don't think I have many related questions by now, you covered pretty much everything. But if you let me ask: how mature is TT Lite (or other supercompile, maybe)? Given how performance lacking and difficult to compile are MLTT based languages today, could it be used to create a performant LLVM/JS backend now, or is it more of a research project?
Thanks again for the great work and answer.
TT Lite is a research project just to show that a certifying supercompiler is possible. Performance/backends are out of the scope of TT Lite at all. Try to look at Idris (it has LLVM and JS backends), Coq, Agda, etc...
I'm looking for a mature supercompiler for a simple functional language. I don't mind very much the language used, I just wish it was complete enough for me to use in a project. Do you know if there is any available?
PS: just reporting minor typing error on the paper, http://o7.no/1oDAkVx http://o7.no/SJaSTK
Hello. I suggest to look into SPSC project https://github.com/spsc/spsc-scala. It works with the same language as this project, but the full "classical" supercompilation with whistle (homeomorphic embedding) and generalization (MSG) is implemented. If you familiar with Scala, it is easy to look into details and (possibly) hack it. Also it has a working web demonstration - http://spsc.appspot.com/, so you can play with it right now.
This is supposed to be for learning purposes so I thought it would be OK to ask questions here. I am absolutely sorry if not! My doubts are:
Thanks in advance and sorry again for any inconvenience.