- you can't store objects in variables, so code looks convoluted with deep nesting as you need to apply multiple transforms to objects
- there are no real variables, more like constants that take the value of the last assignment, so you can't do basic stuff like x = min(x, 5)
- you can't access object attributes (size, etc.) so it's not possible to generate features that depend on another object. You always need to have lots of parameters in scope. A simple use case would be to punch 4 holes in the corners of a box cover.
- string functions are very limited, there is only str() to convert a value to string but with no control on the formatting, there is no printf-equivalent