It's because you think of functions differently in Haskell. They're not running processes which are delayed by partial application but instead partially constrained unifications.
Which is sort of worse sounding, but it becomes quite natural once you start writing using types. I think of it like using legos.
makeLegoman :: Legs -> Torso -> Head -> Legoman
makeLegoman some_legs :: Torso -> Head -> Legoman
makeLegoman some_legs some_torso some_head :: Legoman
Which is sort of worse sounding, but it becomes quite natural once you start writing using types. I think of it like using legos.