Типы и типы
Очевидно ли, почему flatten и (partial apply concat) в Clojure могут выдать разные результаты? После хаскеля кложурный flatten, работающий на все уровни "вглубь", выглядит непривычно.
По ходу, статическая типизация делает невозможными некоторые типы программ, возможные при динамической.
Соответственно, наиболее заебатая статическая типизация, с какими-нибудь адскими зависимыми типами, должна делать невозможными еще большее количество программ.
А самая правильная типизация - это при которой множество допустимых программ пустое.
По ходу, статическая типизация делает невозможными некоторые типы программ, возможные при динамической.
Соответственно, наиболее заебатая статическая типизация, с какими-нибудь адскими зависимыми типами, должна делать невозможными еще большее количество программ.
А самая правильная типизация - это при которой множество допустимых программ пустое.
no subject
no subject
no subject
Нет, просто приходится вручную описывать все варианты, что в динамике даются на халяву. Таким образом, функция объема статического кода от динамического, - как минимум, степенная.
Путем наворачивания крутых статических типов можно довести объем статического кода до динамического.
Т.е. в пределе крутой статический код это простой динамический.
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
no subject
Это тянет на теорему. Какие например типы?
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
no subject
(Anonymous) 2012-02-24 09:17 am (UTC)(link)имхо основное практическое удовольствие хаскеля в алгебраических типах данных, и с ними можно наводить порядок в запутанной логике и куче таблиц в бд, да?
ну или там веб-сервисы какие-нибудь, которые всё время меняются.
когда целая куча разных чужих сервисов, которые меняют как попало совершенно левые люди, удовольствие делать э.. интеграционную программу уменьшается (
как отражать в статических типах данных эти изменения?
например если у нас всюду списки, и всё динамическое, то за счёт паттерн-матчинга можно сделать какую-то "подвижность" в логике программы, и когда в чужой интерфейс внесут небольшое изменение, вдруг может быть оно и не сломается.
(если система не банковская, а простой поиск по разной фигне, и всем наплевать на количество косяков, лишь бы давало хоть какой-то ответ. то есть плевать в какой-то мере на надёжность.)
так вот - можно ли как-то получить удовольствие со статическими типами?
(например в веб-фреймворках можно встретить некий вспомогательный механизм "миграции" для типов данных в таблицах.
и по этим миграциям изредка видно, что куда менялось, и даже можно бывает что-то откатить в какую-нибудь сторону.)
(no subject)
(no subject)
(no subject)
(no subject)
(Anonymous) - 2012-02-24 10:26 (UTC) - Expand(no subject)
(no subject)
(no subject)
(Anonymous) - 2012-02-24 11:52 (UTC) - Expand(no subject)
(no subject)
(Anonymous) - 2012-02-27 05:58 (UTC) - Expand(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
no subject