Our great sponsors
-
bytestring
An efficient compact, immutable byte string type (both strict and lazy) suitable for binary or 8-bit character data.
-
WorkOS
The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.
-
gotta-go-fast
Discontinued Abandoned: https://github.com/haskellfoundation/tech-proposals/pull/9 (by soupi)
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
I have been trying to answer it for myself practically on a toy program that needs a ton of memorization. What I found is that optimizing space behaviour is hell. A value resides in memory while it is in scope, but when and for how long exactly is it in scope? Depends on inlining and specialization. And these things are fragile. Once a computation is evaluated to a big value, there is no way to forcibly «forget» it so that it turns back into a small computation, which makes some seemingly simple things practically impossible. This stuff is not explained anywhere either.
Standard streaming libraries. They are being written by people that make the effort to understand performance and I have a hope that they make sure their streams run in linear space under any optimizations. It is curious and unsettling that we have standard lazy text and byte streams at the same time — and the default lazy lists, of course. I have been doing some work on byte streams and what I found out is that there is no way to check that your folds are actually space constant even if the value in question is a primitive, like say a byte — thunks may explode and then collapse over the run time of a single computation, defying any effort at inspection.
With Lev as defined here.
I hope the proposed performance tuning book (the source is on github) will make it easier to learn this stuff.
One time I actually gathered my resolve and asked him to describe a package. Nothing happened.