Reject:
r.field = (.) r field
f x.field y = (.) (f x) (field y)
f x .field y = (.) (f x) (field y)
f x (.field) y = f x (\a -> (.) a field) y
f x (.field y) = f x (\a -> (.) a (field y))
OnlySelection:
r.field = getField @"field" r
f x.field y = f (getField @"field" x) y
f x .field y -- NOT ALLOWED
f x (.field) y -- NOPE
f x (.field y) -- NAY
SectionSelector:
r.field = getField @"field" r
f x.field y = f (getField @"field" x) y
f x .field y -- VERBOTEN!
f x (.field) y = f x (\r -> getField @"field" r) y
f x (.field y) -- BAD!
PlainSelector: -- this is the proposal as it stands, I believe
r.field = getField @"field" r
f x.field y = f (getField @"field" x) y
f x .field y = f x (\r -> getField @"field" r) y
f x (.field) y = f x (\r -> getField @"field" r) y
f x (.field y) = f x ((\r -> getField @"field" r) y) = f x (getField @"field" y) -- !
Ocaml:
r.field = getField @"field" r
f x.field y = f (getField @"field" x) y
f x .field y = f (getField @"field" x) y
f x (.field) y -- NOT ALLOWED
f x (.field y) -- CAN’T DO THAT
Ocaml+Section:
r.field = getField @"field" r
f x.field y = f (getField @"field" x) y
f x .field y = f (getField @"field" x) y
f x (.field) y = f (\r -> getField @"field" r) y
f x (.field y) -- NO NO NO
JS:
r.field = getField @"field" r
f x.field y = (getField @"field" (f x)) y
f x .field y = (getField @"field" (f x)) y
f x (.field) y -- IMPOSSIBLE!
f x (.field y) -- STOP IT PLEASE!
JS+Section:
r.field = getField @"field" r
f x.field y = (getField @"field" (f x)) y
f x .field y = (getField @"field" (f x)) y
f x (.field) y = f x (\r -> getField @"field" r) y
f x (.field y) = f x (\r -> (getField @"field" r) y)
I hope this is helpful!