Entry tags:
ADT как панацея
http://juick.com/dmz/2163653
Алгебраические типы данных и сопоставление с образцом - то, чего дичайше не хватает в "мейнстримных языках".
В принципе, ничто не мешает закатить солнце вручную - например, написать мелкий кодогенератор, который будет из описания типа генерить код класса-типа и его наследников-вариантов и паттерн-матчинг на дельфи-C#-жабе-прочем. Но это элемент зла, проще уж F# использовать.
Алгебраические типы данных и сопоставление с образцом - то, чего дичайше не хватает в "мейнстримных языках".
В принципе, ничто не мешает закатить солнце вручную - например, написать мелкий кодогенератор, который будет из описания типа генерить код класса-типа и его наследников-вариантов и паттерн-матчинг на дельфи-C#-жабе-прочем. Но это элемент зла, проще уж F# использовать.
no subject
"алгебраические" типы легко эмулировать например обычными классами (или например в Яве енум-классами),
а "сопоставление" -- обычные if(x instanceof X).
Вот прямо сейчас у меня куча кода, которая именно так и работает. Это конечно не самый хороший и красивый код, правильно бы юзать визиторов, но принципиальной "нехватки" не наблюдается -- так, эстетическая некрасивость.
no subject
no subject
void Print(int n) { Console.Write(n.ToString()); }
void Print(string s) { Console.Write(s); }
Print((dynamic) something)
Но это все неудобно и не совсем то.
no subject
это как раз то самое, но место выполнение case оператора выносится в отдельный метод (к тому же с именем, которое надо придумывать и писать)
однако в явке уже с 6 можно писать свои классы (со своими методами) прямо посреди блока кода, так что можно далеко не ходить
но зачем это всё, если уже есть скала и там всё хорошо