[identity profile] thinker8086.livejournal.com 2012-09-02 08:02 am (UTC)(link)
А вот кстати да, именно подобный пример пришёл в голову.

Можно, конечно, сказать, что "плохой дизайн", но оно вроде как просто и масштабируемо.

А как это делается в нормальных языках?

[identity profile] metaclass.livejournal.com 2012-09-02 08:19 am (UTC)(link)
Во-первых, там разные реализации не нужны. В принципе. В контексте функциональных языков и иммутабельности "другая реализация записи из БД" - это безумие. Данные они и есть данные, если мы хотим с ними работать по другому - мы просто возьмем другие функции, если мы хотим полиморфизма - так он у нас и так есть, без объектов и классов.

Во-вторых, если нам так хочется, мы можем ORM параметризировать функциями, т.е. сам по себе ORM в функциональном языке - это будет некий набор функций высшего порядка (а при наличии метапрограммирования - еще и макросов, генерирующих типы из схемы БД).