- [ ] Encoding that `[Binding r]` contains static and dynamic attributes, whereas static ones have to have a different key: ```haskell data StaticAttributeValue r = Inherit (Maybe r) | NamedVar [NKeyName r] r type StaticAttributes r = Map VarName (StaticAttributeValue r) type DynamicAttributes r = [(NDynamicAttrPath r, r)] type Bindings r = (StaticAttributes r, DynamicAttributes r) ``` - [ ] Instead of strings being `[Antiquoted Text r]`, they should be ```haskell data Interpolated a s = Interpolated a [(s, a)] type String = Interpolated Text r ``` - [ ] #977 - [x] #1041 - [x] Instead of having `NSet bindings` and `NRecSet bindings`, it should be a single `NSet rec bindings` (first argument indicates it being recursive or not) - [x] #976 Maybe other improvements are possible too. I really dislike how some things are representable using the current one but never occur in parsing Nix.
[Binding r]contains static and dynamic attributes, whereas static ones have to have a different key:[Antiquoted Text r], they should beNAttrPathshould differentiate between${a}.b.canda.b.cwith 2 different typesNStaticAttrPathandNDynamicAttrPath#977NBinary NApp f arg, it should beNApp f arg#1041NSet bindingsandNRecSet bindings, it should be a singleNSet rec bindings(first argument indicates it being recursive or not)Inherit !(Maybe r) ![NKeyName r] !SourcePosshould beInherit !(Maybe r) ![VarName] !SourcePos#976Maybe other improvements are possible too. I really dislike how some things are representable using the current one but never occur in parsing Nix.