Another thought: Perhaps bang as record selection operator. It would avoid further corner cases of dot, and it's not unprecedented in Haskell (e.g. Data.Map.!). If one wished to use dot, one could do this: import Prelude hiding ((.)); import Control.Category.Unicode((∘)); (.) = (!);