Open NickSeagull opened 6 years ago
Completely agree with this. Before you carry out a refactoring of a core type or function, make sure you list out the name changes here so we can discuss.
I wonder if it would make more difficult a hypothetical change to ghc 8. As haskell packages will increase the use of ghc >= 8 features we'll reach a situation that patches (or changes upstream) would be near impossible to accomplish
Agree with @jneira , although I'm not sure if that would be harder than refactoring...
Thinking on this again, maybe this is the point when we start departing from GHC? Is our aim to be GHCJVM or a different language that is compatible with most Haskell packages?
There is effort that maybe could be invested in generating a better ecosystem rather than keeping the pace of GHC
I don't know, I'm just giving all the ideas that come to my mind :smile:
Well, i would quote this relevant faq question:
How is Eta different from Frege? Eta is strategically designed so that Hackage packages can be compiled with little modification, allowing reuse of existing infrastructure. This is done by supporting many of the GHC-specific extensions that are used heavily in popular libraries. On the other hand, Frege, while it supports basic Haskell, lacks many of the key extensions required to compile Hackage, and hence cannot reuse the existing infrastructure. Moreover, because Eta uses a modified version of GHC’s frontend, we have access to all the powerful and well-tuned optimizations that Frege does not.
Also this early issue about frege and eta: https://github.com/typelead/eta/issues/3
I think eta fills a space betwen haskell and the jvm (with all it existing langs like scala, clojure, frege..) in a delicate balance. In my opinion haskell continue being the state of the art for lazy functional languages and i would like eta to be as close to haskell ecosystem philosophy (maybe not to the actual implementation) as possible.
Yep, definitely @jneira , I didn't want to imply that we should depart in philosophy. I'm with you about the Haskell philosophy.
I was talking about implementing GHC8.
I understand the differences between Frege and Eta :smile:
@jneira My gut says the scenario where GHC 8 makes a lot of patches impossible probably won't happen that soon. If/when such a situation happens, it means whatever features GHC 8 has are extremely practical and useful and it is imperative that we adopt them too.
Now, as you said, merging patches from GHC 8 upstream will become difficult if we do a refactoring. So does this mean we keep the codebase intimidating for newbies to contribute patches, especially in places like the Lexer/Parser? That's something we should discuss.
Thinking on this again, maybe this is the point when we start departing from GHC? Is our aim to be GHCJVM or a different language that is compatible with most Haskell packages?
I would say we want to be closer to the latter. The whole point of Eta since inception was to package Haskell in a way that everyone can use without sacrificing on the nice reasoning properties that the language gives you.
Moreover, we wanted to be able to take advantage of both the JVM & Haskell ecosystems and we would love to keep that going as much as possible. Of course, there are going to be some Haskell packages that we'll probably never be able to use since they'll use the most recent features and I think that's OK (singletons
is a good example, though there is a way to encode it to work well with GHC 7.10). I'm sure that people who really want to use such packages will find a way to encode it differently using just the features Eta has, just like how Scala devs have been encoding Haskell constructs into Scala.
Awesome! Sounds great to hear that I'm on the same page as you :smile:
Refactor progress
more modules can be added...
Description
Working through the
Parser
module, functions likeamsu
,sLL
,mj
, etc... make very hard to start working on stuff.It would be nice if they had meaningful names, aswell as all the existing legacy GHC code, like for example types like
RdrName
.Maybe I can refactor some code I have touched? This issue could serve as a tracker