When I write:
(square 10 ||| square 10 ||| square 10 ) `atop` square 30
I'd expect a row of three little squares fitting neatly inside a big one:
+-----------------+
| |
| |
+-----+-----+-----+
| | | |
| | | |
+-----+-----+-----+
| |
| |
+-----------------+
But the little squares all appear shifted 10 units to the right so that the leftmost little square is at the centre of the big square, the middle one's right hand edge coincides with the big square's right hand edge, and the rightmost little square is just outside the big square:
+-----------------+
| |
| |
| +-----+-----+-----+
| | | | |
| | | | |
| +-----+-----+-----+
| |
| |
+-----------------+
That doesn't seem to fit with the writing on the tin of this library, but perhaps I'm supposed to write:
(square 10 ||| square 10 ||| square 10 ) # setEnvelopeToBoundingBox `atop` square 30
I just can't find anything like setEnvelopeToBoundingBox
, and somehow I don't believe it's designed to be hard.
Trying to mop this up with translation became totally unmaintainable after the mildest complications in the spec.