What would you change about haskell? - Haskell

Welcome to the Functional Programming Zulip Chat Archive. You can join the chat here.

Joel McCracken

If you had a magic wand and could suddenly change haskell, what would you change? For example, one thing that comes to mind is replacing String with Text

Vladimir Ciobanu

100% steal the whole of purescript's records implementation and throw haskell's in the dumpster.

Sridhar Ratnakumar

Replace stack and Nix with one based on Haskell (hnix) and integrate it tightly to HLS for one awesome dev experience.

Ecosystem answer.

Joel McCracken

i'd love to get rid of all the partial functions in base/

Joel McCracken

basically modernize the prelude

Joel McCracken

fix up template haskell, though I can't say exactly whats wrong with it, I don't have much experience with it

Joel McCracken

i'd really love for GHCJS to be faster etc

James King

Bring down compile times by a factor of 2.

Joel McCracken

it would be great if the optimizer was better understood

Joel McCracken

so make it more predicatble?

Joel McCracken

it may be perfectly predictable today idk

James King

Be able to address off-heap memory... along with modernizing the Prelude. It'd be nice to have common data structures, text, no partial functions, etc.

James King

I like being able to experiment with a bit of code quickly without having to setup a package and dependencies just to get basic facilities like a hashmap or bytestrings

Joel McCracken

i'd like to give it a dependent type system so its easier to learn the type level programming stuff in haskell

TheMatten

fix up template haskell, though I can't say exactly whats wrong with it, I don't have much experience with it

TH interface is a "split personality":

  • it let's you construct AST by using normal constructors with applicative style, but at the same time it has these lowercase functions that wrap around Q automatically - that sounds convenient at first, but doesn't "fit" your requirements all the time
  • It provides 3 modules which import mostly the same things (Language.Haskell.TH, Language.Haskell.TH.Lib, Language.Haskell.TH.Syntax) and you never know which ones to import to get those you want
  • It's Q monad is a, well, Monad, but it still exports bunch of monomorphized versions of Monad combinators with Q suffix

And then it doesn't let you do "pure" metaprogramming without IO, which greatly limits guarantees about interface that's mostly used to generate some piece of code from simple arguments and current scope

Georgi Lyubenov // googleson78
  • purescript-ish records
  • add real dependent types (ala idris/agda) - the current state with sings makes it look very frightening to newcomers (and it's also rather boilerplate and syntax heavy)
  • ability to share instances for things like data Tup a b c = Tup a b c and (a, b, c) without resorting to Generics (aka some kind of structural typing?)
  • better support for custom type errors - most libraries trying to provide type errors have various problems with this
  • add some way to support different representation in the type system vs at runtime - I want to be able to use data Nat = Z | S Nat while typechecking, but have all their operations compiled to much more efficient Integer ones (inspired by agda somewhat)
  • add Foldable1 (/NonEmptyFoldable or whatever name..) in base
  • make typeclasses "more first-class" - maybe have something like what implicit arguments are in agda, very often I would like to use ApplyingVia-like things
  • turn on a lot more warnings by default to help out newcomers
Matt Peddie
  • reduce compile times by a factor of 22 -- 2 is nowhere near enough ;)
  • fix the various warts and corner cases of existing language extensions (e.g. the intersection of -XQuantifiedConstraints and -XTypeFamilies comes to mind, or the various proposals for a much better -XApplicativeDo)
  • figure out a better way to avoid baking Bool into if than -XRebindableSyntax and similar DSL-related concerns
  • many fixes to the prelude / base
  • support perf profiling in a useful way
  • impredicativity would have been on here, except SPJ already nailed it
Torsten Schmits

Matt Peddie said:

  • impredicativity would have been on here, except SPJ already nailed it

ooh, nice

Mats Rauhala

Location information to all io related errors