Haskell ghost knowledge; difficult to access, not written down

This page summarizes the projects mentioned and recommended in the original post on reddit.com/r/haskell

Our great sponsors
  • Scout APM - Less time debugging, more time building
  • SonarQube - Static code analysis for 29 languages.
  • SaaSHub - Software Alternatives and Reviews
  • superrecord

    Haskell: Supercharged anonymous records (by agrafix)

    Cool. I added a few features (#30, #31) to superrecord that I needed in order to synthesise the record type from JSON at runtime, so I'd probably have to wait until those are ported to give it a try (unfortunately rather swamped at the moment so can't find the time to port those features myself right now).

  • large-records

    Library to support efficient compilation of large records (linear in the number of record fields)

    Also: maybe you already knew GHC.Generics instances had superlinear compilation time, but betcha you didn't know even normal records themselves had superlinear compilation time. At least I didn't know until Edsko's super-recent investigation (resulting in yet-unreleased https://github.com/well-typed/large-records)

  • Scout APM

    Less time debugging, more time building. Scout APM allows you to find and fix performance issues with no hassle. Now with error monitoring and external services monitoring, Scout is a developer's best friend when it comes to application development.

  • post-rfc

    Blog post previews in need of peer review

  • rlua

    High level Lua bindings to Rust

    Idiomatic bindings to the Lua reference implementation are tricky: https://github.com/amethyst/rlua/issues/172#issuecomment-616975763

  • cxx

    Safe interop between Rust and C++

    Interestingly, things get easier in some sense when you try to interoperate with C++, as more Rust features have an analogue there. See cxx and autocxx.

  • hyper

    An HTTP library for Rust (by hyperium)

    Initial PR to expose a C API for hyper (for usage in a curl backend): https://github.com/hyperium/hyper/pull/2278

  • amazonka

    A comprehensive Amazon Web Services SDK for Haskell.

    amazonka is a bit of a minefield despite being listed as the only AWS library by SOTU

  • SonarQube

    Static code analysis for 29 languages.. Your projects are multi-language. So is SonarQube analysis. Find Bugs, Vulnerabilities, Security Hotspots, and Code Smells so you can release quality code every time. Get started analyzing your projects today for free.

  • regex-tdfa

    Pure Haskell Tagged DFA Backend for "Text.Regex" (regex-base) (by haskell-hvr)

    regex-tdfa, a very popular library, is buggy (e.g. here) despite claiming that "This regex-tdfa package implements, correctly, POSIX extended regular expressions [and your OS likely doesn't]"; its bugs very likely won't be fixed despite the fact that the library is still maintained

  • bytestring

    An efficient compact, immutable byte string type (both strict and lazy) suitable for binary or 8-bit character data.

    If you need fast Double rendering you can get a significant improvement by using double-conversion or the Ryu branch of bytestring. Again, you'd expect that "how to show a floating-point number quickly" would be a solved problem, but it's not.

  • text-icu

    This package provides the Haskell Data.Text.ICU library, for performing complex manipulation of Unicode text.

    text-icu occasionally breaks horribly and nondeterministically (1, 2) despite being praised by SOTU

  • rust-bindgen

    Automatically generates Rust FFI bindings to C (and some C++) libraries.

    Yeah, it is certainly advisable to e.g. avoid setjmp/longjmp as in the Lua example above (this was the main reason for the release of Rust 1.24.1). But even for "Rust-aware" C, one has to write a lot of boilerplate. For example, with bindgen, the go-to tool to create bindings to C headers, one has to write (unsafe) wrapper functions which

  • jrec

    Literally the best anonymous records

    Try jrec. I threw away the sorting and it typechecks much faster now.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts