>>> pretty $ Let [("x", 3), ("y", 5)] (Var "x" * Var "y") -- if it fits into a single line: let {x = 3; y = 5} in x * y -- otherwise: let x = 3 y = 5 in x * y Fancy! But a bit magical. What do the group and align functions do exactly? The core trick First let us summarize our goal. We want alternative layouts: The newline version is narrow but long, the flat version is short but wide. The layoutin