To give you a single data point, our Haskell code base at ITProTV is about 50,000 lines of code. Reloading the project after a change in GHCi takes slightly less than one second. We haven't spent any significant effort on speeding up compile speeds, for what it's worth. It's fast enough.
> Rasa is putting extensions first from the very beginning, I've read that Yi has plans to extract their renderers into extensions but hasn't been able to easily extract them at this point. In rasa, EVERYTHING is an extension (for better or worse I suppose we'll see).
So it's basically as useless for general processing as Markdown, because you
won't have a grammar from which you can generate parser, hence all the parsers
will be handcoded with various quirks differing from one to another and none
of which will produce a parse tree.
I think it's a little misleading to call that "a while". The post says "156 private repositories" were affected during a "ten-minute window" representing "0.0013% of the total operations at the time".
My mistake, I thought you were saying I could still have the syntax features I wanted in the language. I like the range syntax, and backticks, and calling functions'. I also liked signals and having access to more stuff that is now 'magic' in the Elm compiler.
No, those don't really appeal to me. I think Elm had a great middle ground for a while pre-0.16 with Signals. I'm just disappointed at what I see as a lack of positive change for the language. The more stuff that becomes compiler magic the worse the language is going to get IMO.
Html.App used to be a namespace, I suspect you mean Program? In any case, how is that any more, or less, magic than Signals? Considering that the compiler has removed syntax in later versions, later versions of Elm has less magic than earlier versions.
I tried this out in PureScript [1]. I also made each type class have only one member and didn't specify any class hierarchy. I like how it works, but I don't know if anyone else does. It allows you to recreate the category theory type classes [2] if you want to:
class (HasMap f) <= Functor f
class (Functor f, HasApply f) <= Apply f
class (Apply f, HasPure f) <= Applicative f
class (Apply m, HasChain m) <= Bind m
class (Applicative m, Bind m) <= Monad m
{-# LANGUAGE DuplicateRecordFields #-}
data A = B { x :: Bool }
| C { x :: Int }
Example.hs:2:1: error:
• Constructors B and C give different types for field ‘x’
• In the data type declaration for ‘A’
> It seems like my progression as a Haskeller results in forcing myself to write in a harder-to-parse style to make my code shorter, to satisfy some base need for "better" code, even though by most measurements I just made, the longer/explicit/pattern matching code is in fact better.
I don't think this is a flaw, in fact I think it neatly solves the problem of how to extend the language without committing to a design too eagerly and provides a platform for experimentation.
There are pragmas that GHC implements that are now widely held to be problematic, but we wouldn't know this without an implementation, and using pragmas, we are realistically able to deprecate and remove these extensions.
That's not anywhere near a complete list of deprecated extensions and there are others that have been completely removed from the language [1]. It's unfortunate that ScopedTypeVariables hasn't been standardised, but there hasn't been a new standard since 2010, so it's not hugely surprising.
Thanks for that link! I haven't seen that wiki page before. Even so, only 4 extensions have been removed. I know others are de facto deprecated, like Rank2Types.
I picked scoped type variables as an example because it's been in GHC since version 6.4. That was released in March 2005, so it had plenty of time to make it into the Haskell2010 language standard.
My impression is that PureScript aims to not be configurable. For example, the compiler does not allow you to disable warnings. Other tools, like `psa`, can do that, but the base language is always the same.