Based on superrecord, but simplified. No automatic field reordering. No GHCJS bits inside. Easier to hack on.
-
Nice construction syntax:
Rec (#id := 18853, #orderId := "MG13-233")
-
Provides
Generic
instances out of the box. Aeson, etc can't believe these aren't normal records! AnythingGeneric
-derived just works. -
Provides
generic-lens
andgeneric-optics
instances out of the box. Due to those custom instances, we support polymorphic updates. -
O(1) field access, O(n) construction.
-
PureScript-style partial records — if you have a
Rec ("foo" := Int ': rest)
,HasField "foo"
will work just fine.
IDE support is available inside nix-shell
. For example, if you use VS Code, you may launch it as:
nix-shell --run "code ."
Run bin/test
for fast-reloading tests. When library sources change, the test script will reload instantly and re-run the tests.
- Documentation.
- Expose all internals.
-- NOTE: doesn't use 'KeyDoesNotExist'
— fix this.RemoveAccessTo
— can we get rid of it?
- The
JRec.Internal
module is entirely based on the code from superrecord.