Здравствуйте, VladD2, Вы писали:
V>>Не надо меня перевирать:
VD>Помилуй! Никто и не собирался перевирать. Вот твои исходные утверждения:
VD>VD>Например, в ФП языках некий Т был value-тип (ну вот так компилятор решил), а после заворачивания F(T) всегда получаем ссылочный тип. Итого, храним лишнюю ссылку вместо значения.
VD>Я тебе показал используемый на практике ValueOption в функциональном языке, что полностью опровергает твои утверждения.
Самое смешное тут то, что про ОСaml тебе несколько лет назад говорил именно я, предлагая возможность описывать variant value SomeVariant и даже давал пример мапинга такого описания на потенциальный генерируемый код.
В общем, OCaml — это не чистый ФП. Это гибридный язык, с мутабельностью, ООП и даже unsafe в шаговой доступности, как и Nemerle — тоже гибридный язык.
В общем, я одно время подробно изучал как унутре работают языки из семейства Standard ML и Хаскель — варианты представлены обычными ссылочными типами, над которыми трудится GC.
Ну и, справедливости ради, у тебя не F(T) из исходного утверждения:
По такой формуле: F(T) = T + 1. Здесь + это сумма типов.
Записи — это произведения, суммы — алгебраики.
К тому же, ты малость потерял контекст. Следующее в той же ветке моё сообщение:
http://www.rsdn.org/forum/philosophy/6705449.1
более подробно раскрывает мою мысль:
можно использовать ссылочные типы как nullable, а для non-nullable ввести ДРУГОЙ тип.
И там же далее по ветке толкается та идея, что для боксированного представления Some и None последний можно представить просто через null. Именно для обоснования такой идеи я напомнил, что в ФП-языках алгебраики почти всегда ссылочные.
В общем, ты вырвал утверждение из контекста.
Оно было не само по себе, а в кач-ве
аргумента для описанного решения.