If you are interested in the story of Haskell, Hoodak, Hughes, Peyton Jones and Wadler, “Haskell's Story: Being Lazy with the Class” is the most famous article on this subject and worth reading.
It does not address your question directly, but it points to one very important fact: Haskell was created as a unifying compromise between a bunch of existing languages ​​from small teams. Quote 2.2 (The Tower of Babel):
As a result of all this activity, by the mid-1980s, a lot of researchers appeared, including authors who were very interested in both design methods and implementations for pure, lazy languages. In fact, many of us independently developed our own lazy languages ​​and were engaged in their creation of our own implementations. We wrote documents about our efforts in which we first had to describe our languages ​​before we could describe our implementation methods. The languages ​​that contributed to this lazy tower of Babel include:
- Miranda [...]
- Lazy ML (LML) [...]
- Orwell [...]
- Alfl [...]
- Id [...]
- Clear [...]
- Ponder [...]
- Daisy [...]
So the answer may simply be that Haskell copied this from its predecessor languages. And since a bunch of these languages, in turn, were founded or inspired by Lisp and ML, they can similarly copy it from them. So back to your question:
What were the main design arguments for this choice?
Most likely, there has never been a standing argument in favor of a choice. In any case, there are very few high-level languages ​​for stack-based design, and few know them.
Luis casillas
source share