Хочу какой-нить ликбез написанный простыми словами про существующие системы типов. А то я вот мучаюсь что выбрать для своего яп (википедию читал).
Пока решил идти от простого: три базовых иммутабельных типа (str, int, double), массив однородных данных и ADT. Я не уверен что мне хочется сделать всё это совершенно иммутабельным, но хочу чтобы передача параметров функции была по значению. Т.е. чтобы in-place модификация вложенных структур данных работала, но при этом это никак не влияло на другие функции которые тоже работают с этими данными. Это позволит избежать горождения огорода с хаскелевыми линзами. Есть ли у такого подхода научное название? И как бы это в коде реализовать?
Пока на ум приходит версионность данных. Типа, мы делаем x= 0; x++ и у нас x уже равен 1, но это не тот x что был изначально. (по-моему, меня на это натолкнули статьи про llvm и SSA).
PS вопросов у меня много, я лучше разобью на несколько постов.
PPS всем добра :)