-- This is just used for pretty printing, so we hard-code the defaults
opPrecs :: PrecEnv
opPrecs = Map.fromList [ (V v,p) | (p,vl) <-
  [((90,RightFix),  ["."])
  ,((80,RightFix),  ["^", "^^", "**"])
  ,((70,LeftFix),   ["*","/"])
  ,((60,LeftFix),   ["+","-"])
  ,((50,RightFix),  [":","++"])
  ,((40,NonFix),    ["==","!=","<","<=",">=",">"])
  ,((30,RightFix),  ["&&"])
  ,((20,RightFix),  ["||"])
  ,((10,LeftFix),   [">>",">>="])
  ,((10,RightFix),  ["<<=","$"])
  ,((2,LeftFix),    ["::"])
  ,((1,RightFix),   ["->"])
  ,((0,RightFix),   ["\\","="])
  ], v <- vl ]
opPrecs :: PrecEnv
opPrecs = Map.fromList [ (V v,p) | (p,vl) <-
  [((90,RightFix),  ["."])
  ,((80,RightFix),  ["^", "^^", "**"])
  ,((70,LeftFix),   ["*","/"])
  ,((60,LeftFix),   ["+","-"])
  ,((50,RightFix),  [":","++"])
  ,((40,NonFix),    ["==","!=","<","<=",">=",">"])
  ,((30,RightFix),  ["&&"])
  ,((20,RightFix),  ["||"])
  ,((10,LeftFix),   [">>",">>="])
  ,((10,RightFix),  ["<<=","$"])
  ,((2,LeftFix),    ["::"])
  ,((1,RightFix),   ["->"])
  ,((0,RightFix),   ["\\","="])
  ], v <- vl ]
opPrecs = Map.fromList [ (V v,p) | (p,vl) <-
  [((90,RightFix),  ["."])
  ,((80,RightFix),  ["^", "^^", "**"])
  ,((70,LeftFix),   ["*","/"])
  ,((60,LeftFix),   ["+","-"])
  ,((50,RightFix),  [":","++"])
  ,((40,NonFix),    ["==","!=","<","<=",">=",">"])
  ,((30,RightFix),  ["&&"])
  ,((20,RightFix),  ["||"])
  ,((10,LeftFix),   [">>",">>="])
  ,((10,RightFix),  ["<<=","$"])
  ,((2,LeftFix),    ["::"])
  ,((1,RightFix),   ["->"])
  ,((0,RightFix),   ["\\","="])
  ], v <- vl ]