metaclass: (дзедline)
metaclass ([personal profile] metaclass) wrote2012-12-13 03:56 pm
Entry tags:

ADT как панацея

http://juick.com/dmz/2163653
Алгебраические типы данных и сопоставление с образцом - то, чего дичайше не хватает в "мейнстримных языках".
В принципе, ничто не мешает закатить солнце вручную - например, написать мелкий кодогенератор, который будет из описания типа генерить код класса-типа и его наследников-вариантов и паттерн-матчинг на дельфи-C#-жабе-прочем. Но это элемент зла, проще уж F# использовать.

[identity profile] iigoncharenko.livejournal.com 2012-12-13 01:18 pm (UTC)(link)
А еще бы рекурсивных типов данных...

[identity profile] volodymir-k.livejournal.com 2012-12-13 03:19 pm (UTC)(link)
Не знаю, интересно ли вам, но вообще-то
"алгебраические" типы легко эмулировать например обычными классами (или например в Яве енум-классами),
а "сопоставление" -- обычные if(x instanceof X).

Вот прямо сейчас у меня куча кода, которая именно так и работает. Это конечно не самый хороший и красивый код, правильно бы юзать визиторов, но принципиальной "нехватки" не наблюдается -- так, эстетическая некрасивость.

[identity profile] juan-gandhi.livejournal.com 2012-12-13 04:18 pm (UTC)(link)
А визитор паттерн привинчивать ко всей подряд хрени?

[identity profile] iigoncharenko.livejournal.com 2012-12-17 11:11 am (UTC)(link)
А смотрел ли кто-нибудь на следующее ?
1. jADT (Java Algebraic DataTypes)
2. FunctionalJava - fj.data
3. ohl (Project ohl - Охламон на googlecode)