Можешь рассказать великим могучим без нечитабельной з
можно про версию S4 рассказать:
у тебя добавляется в качестве примитива один или два унарных конструктора типов: бокс и даймонд (даймонд часто не включают в систему)
всё что в боксе живёт может использоваться остальными термами без ограничений, а вот “небоксированные” термы обычно не могут проникнуть в боксированные.
это можно интерпретировать по-разному:
- боксированные термы представляют исходный код, на который можно eval
как в динамических языках, например, натравить; получаются двустадийные вычисления а-ля олеговский BER MetaOCaml
- боксированные термы представляют чистые вычисления, а небоксированные — с возможными эффектами