linear VS ghc-proposals

Compare linear vs ghc-proposals and see what are their differences.


Low-dimensional linear algebra primitives for Haskell. (by ekmett)


Proposed compiler and language changes for GHC and GHC/Haskell (by ghc-proposals)
Our great sponsors
  • - Optimize your datasets for ML
  • Scout APM - A developer's best friend. Try free for 14-days
  • Nanos - Run Linux Software Faster and Safer than Linux with Unikernels
linear ghc-proposals
2 68
168 559
- 1.8%
5.4 8.5
25 days ago 3 days ago
Haskell Python
BSD 3-clause "New" or "Revised" License -
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.


Posts with mentions or reviews of linear. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2021-06-02.
  • Probabilistic modelling in Idris: engineering as research | 2021-06-30
    I've come to love the linear approach, where instead of working with Naperian (Representable) functors, you work with Distributive functors.
  • Monthly Hask Anything (June 2021) | 2021-06-02
    See also the linear library, it contains types like data V3 a = V3 a a a with all of the useful instances.


Posts with mentions or reviews of ghc-proposals. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2021-10-08.
  • Status of Record Dot Syntax? | 2021-10-08
  • Monads and Macros | 2021-10-03
    See my comments to, where I invoke Racket frequently.

    It's the right sort of goal, but we have to go all the way to full phase separation to make it mean something.

  • Unresolved challenges of scoped effects, and what that means for `eff` | 2021-10-01
    I think rank-2 polymorphism often really sucks to work with in Haskell, especially after SPJ’s “simplify subsumption” proposal, which often requires explicit eta-expansion to make programs typecheck. On the other hand, this idea is still more palatable than most other ones I’ve considered to make these sorts of interactions sound. Maybe the downsides of rank-2 polymorphism are worth accepting to better support scoping operations?
  • Fall-from-Grace: A ready-to-fork functional programming language | 2021-10-01
    It depends on what you mean by subsumption. I assume you're referring to some of the four changes from this proposal, but I wasn't sure which ones you meant
  • The Futhark Error Index
    In the Haskell community there has been some discussion (here and here) about numeric vs string labels for error messages.
  • "The Haskell ecosystem has really mature"— Thomas Tuegel | 2021-09-02
    If I could change one thing about Haskell, I would replace Haskell's module system with the proposed LocalModules extension. Teams using Haskell really lack good tools for managing names. It's not so important when a project is small, but this type of organization is really critical once you have more code than you can comfortably read in an afternoon.
  • Future of GHC.Generics | 2021-09-01
    Consider making a proposal:
  • Monthly Hask Anything (August 2021) | 2021-08-14
    These errors are probably due to simplified subsumption. In the first case you can probably fix it by eta-expanding:
  • Principles of Programming Languages - Robert Harper | 2021-07-29
    I tried it out and it is really not usable yet unfortunately. There are several problems. I think the main issue is that you need two versions of all functions and data types. And currently classes like Num are not levity-polymorphic (there is a proposal about this), so you can't use + to add two "real" inductive peano naturals. One problem with making type classes levity-polymorphic is that top-level bindings can't be levity-polymorphic, so mempty cannot be levity-polymorphic. A workaround is to use a type class to levitate levity-polymorphic variables, but that has disadvantages too. Levitated values are not shared and must be recomputed at every call site. | 2021-07-29
    Secondly, in a lazy language we can play a similar game and include a by-value subset. Instead of wrapping the types we can use the fact that "kinds are calling conventions" and define a kind for unlifted data types (included in GHC 9.2) which cannot contain thunks. In that way we can define real inductive data types.

What are some alternatives?

When comparing linear and ghc-proposals you can also consider the following projects:

ihp - 🔥 The fastest way to build type safe web apps. IHP is a new batteries-included web framework optimized for longterm productivity and programmer happiness



haddock - Haskell Documentation Tool

nimber - Finite nimber arithmetic

hoogle - Haskell API search engine

idris - A Dependently Typed Functional Programming Language

search - infinite search in finite time with Hilbert's epsilon

Exercism - Scala Exercises - Crowd-sourced code mentorship. Practice having thoughtful conversations about code.

julia - The Julia Programming Language