Haskell ghost knowledge; difficult to access, not written down

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

Our great sponsors
  • Onboard AI - Learn any GitHub repo in 59 seconds
  • InfluxDB - Collect and Analyze Billions of Data Points in Real Time
  • 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)

  • Onboard AI

    Learn any GitHub repo in 59 seconds. Onboard AI learns any GitHub repo in minutes and lets you chat with it to locate functionality, understand different parts, and generate new code. Use it for free at www.getonboard.dev.

  • 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

  • InfluxDB

    Collect and Analyze Billions of Data Points in Real Time. Manage all types of time series data in a single, purpose-built database. Run at any scale in any environment in the cloud, on-premises, or at the edge.

  • 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