in progress haskell precedence and fixity
more writing
done?
Fixed types and renamed post
simplified impl