metaclass: (дзедline)
[personal profile] metaclass
Столкнулся с тем, что наиболее внятно задача, которую я решаю, укладывается в Clojure и не укладывается (без частичного выкидывания статической типизации) в скалы-хаскели-C#-F#.
Вернее даже не выкидывание, а просто получается имитация типичного для Clojure типа данных Map[Symbol,Any] и использование его во все поля.

Можно, конечно, было бы убрать вообще всю логику, вплоть до SQL-запросов, из БД и писать запросы для ORM типа slick, но это в данном случае натягивание совы на глобус, более чем бессмысленное, т.к. статически типизированный результат запроса в ORM нужно будет превратить обратно в нихрена не типизированнный датасет типа Seq[Map[Symbol,Any]] и сериализовать его в json для клиента.
Или прикрутить shapeless (https://github.com/milessabin/shapeless) и навернуть extensible records поверх HList на предмет того, чтобы типовыводилка генерила еще и метаданные, но в итоге получится что-то совсем печальное и малопонятное.

Date: 2013-03-12 12:29 pm (UTC)
From: [identity profile] theiced.livejournal.com
ещё годик-другой и наконец у тебя зародится моск!

Date: 2013-03-12 12:59 pm (UTC)
From: [identity profile] permea-kra.livejournal.com
Если ваша задача не укладывается в статические типы, либо у вас недостаточно полиморфизма, либо зависимых типов. Ваш КО.

Date: 2013-03-12 01:47 pm (UTC)
From: [identity profile] norian.livejournal.com
в кутях придумали хорошее решение проблемы типизации - тип QVariant

с одной стороны, тип динамический и снаружи любые данные выглядят как QVariant, в коем виде их можно запихивать в любые контейнеры или контролы
с другой, его можно проверить или извлечь как статический с помощью встроенного или прикрученного метода вроде toInt()

Date: 2013-03-12 01:53 pm (UTC)
From: [identity profile] jakobz.livejournal.com
Ты кстати type providers из F# не пробовал?

Date: 2013-03-12 01:58 pm (UTC)
From: [identity profile] besm6.livejournal.com
Из описания задачи следует, что у тебя, по сути, задача на преобразование текста регулярными выражениями. Ну, или каким-то другим парсером, но из текста в текст. Другой взгляд - задача написания транслятора языка. При этом другом взгляде оно в статические типы укладывается, но по-другому - мы делаем типы для языка, а не для конкретных выражений на этом языке (типы твоей конкретной задачи). Если у тебя нет задачи обрабатывать эти данные внутри себя, а надо только передать в клиента, то нет смысла делать типы для каждой структуры.

Date: 2013-03-12 06:40 pm (UTC)
From: [identity profile] voidex.livejournal.com
> наиболее внятно задача ... укладывается в Clojure
Это же абсурд

Date: 2013-03-12 08:03 pm (UTC)
From: [identity profile] vit-r.livejournal.com
Архитектуру определяет образ мысли архитектора. Так что ничего удивительного.
Ну и задача тоже немного роль играет.

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 7th, 2025 09:35 pm
Powered by Dreamwidth Studios