You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
instance (Prettyl, Prettyr) =>Pretty (Mullr) where
pretty (Mul a b) =unwords [autoParens a, "*", autoParens b]
where autoParens a@(Add _ _) ="("++ pretty a ++")"
autoParens a = pretty a
Gives the following error:
• Couldn't match expected type ‘Add l0 r0’ with actual type ‘l’
‘l’ is a rigid type variable bound by
the instance declaration
at /home/leif/Documents/type-level/src/Lib.hs:91:10-49
• In the first argument of ‘autoParens’, namely ‘a’
In the expression: autoParens a
In the first argument of ‘unwords’, namely
‘[autoParens a, "*", autoParens b]’
• Relevant bindings include
a :: l (bound at /home/leif/Documents/type-level/src/Lib.hs:92:15)
pretty :: Mul l r -> String
(bound at /home/leif/Documents/type-level/src/Lib.hs:92:3)
And the same for autoParens b. I think I'm missing a LANGUAGE pragma somewhere that would prevent autoParens (Add _ _) from collapsing to Add l r -> String.
The text was updated successfully, but these errors were encountered:
Not this is an oversight from me, I tried to make a somewhat smart instance but at a point in the design space (and blog post) where we just can't expect what's below like this, we don't know what the left or right hand side of the multiplication hold, we would need to tweak the Pretty class to be augmented with some information about precedence etc.
Maybe it'd just be simpler to ignore the whole problem since the blog post isn't about that at all, and we have pretty printing libraries that can do this well?
The pretty instance for
Mul
:Gives the following error:
And the same for
autoParens b
. I think I'm missing a LANGUAGE pragma somewhere that would preventautoParens (Add _ _)
from collapsing toAdd l r -> String
.The text was updated successfully, but these errors were encountered: