К вопросу о мышлении. Я привык, глядя на объявление функции, сразу понимать:
1. Что она ожидает на вход
2. Что она вернёт на выходе
3. Что она может (в принципе)
И этого мне (повторю: мне) катастрофически не хватает в нетипизированных языках. Например,
https://github.com/clojure/clojurescript/blob/master/src/main/clojure/cljs/externs.clj#L28.
(defn annotate [props ty]
Я понимаю, что эта функция принимает список чего-то (да?), но неясно, список чего, и совершенно неясно, что она вернёт на выходе. То есть я в замешательстве, я не знаю, чего ожидать от этой функции.