Alexander
у тебя это data Foo x = forall Foo x . Foo - говорит о том, что словарь для Foo для типов нужен в рантайме
Alexander
и его явно нужно таскать
Alexander
как бы говоря совершенно точно что ты хочешь от системы
Alexander
какой профит от вложенных типов, кроме того, что вывод типов ты сломаешь, и классы типов перестанут работать?
Alexander
учитывая то, что классы типов это то, что делает язык полезным
Alexander
мне кажется возможность говорить компилятору что ты от него хочешь это не большая цена, за нормальный язык
Alexander
кстати если хочется обобщить классы типов, то можно написать data C (c::Constraint) = forall x . c x=>
Alexander
C x
Ilya
Хорошо.
В теории типов нет классов типов, но там есть вложенные типы. Там мы смогли бы написать
data Wrap = Wrap Show
И собрать список типа [Wrap "a", Wrap 1, Wrap True], который мы бы умели печатать на экран, и ничего больше.
С-ма типов хаскеля по дефолту такое не может, но может с хаком, нужно расширение (GHC специфичное?) И констрейнты
Ilya
Вот это я имел в виду под хаком
Alexander
в теории типов нету классов типов, но есть вложенные типы - это как понимать?
Ilya
Это ошибочное утверждение?
Alexander
в теории типов есть как ad-hoc полиморфизм так и subtype полиморфизм
Alexander
конкретная система типов может иметь одно, другое или ничего из
Alexander
или оба
Alexander
подробнее позже отпишусь, если никто раньше не сделает
доня.
Vladislav
Это ошибочное утверждение?
В теории типов есть все, что вообще формализовали когда-либо. Теория типов занимается изучением конкретных систем типов. А в них уже будут те фичи, которые автору захотелось.
Vladislav
А дальше вопрос в том, какие фичи сочетаются между собой, и какая мета-теория конкретной системы типов (какие свойства программ мы можем знать из их типов)
Vladislav
Haskell как язык не формализован нормально, так что с этой позиции можно половину его фич назвать хаком.
Vladislav
При этом все пользуются и всем хорошо.
Vladislav
Хотя и багов из-за этого тоже хватает. Это трейдофф между корректность и скоростью развития языка.
Vladislav
Вот констрейнты на экзистенциальные переменные реализованы уже невесть как давно, работают хорошо, и про них легко рассуждать операционно. В чем проблема не вижу.
Alexander
учитывая, что они и руками без externsions реализуются
Alexander
допустим есть словарь Foo a с методом foo :: a -> B -> X, тогда можно сделать структуру FooS [ foo :: B -> X } будет работать почти так же
Alexander
более близкие вещи уже через расширения вроде
Зигохистоморфный
https://bananasandlenses.net//episode039.html
Alexander
блин, до нового года не продержались
Leonid 🦇
Главное тебе теперь к четвергу подготовиться...
Dmitry
а что в четверг?
Leonid 🦇
https://spb-fp-meetup.timepad.ru/event/555708/
Alexander
действительно
Alexander
а там так же не прокатит?
Мерль
Новый выпуск Банананов и линз!
Donat
woah
Aleksei (astynax)
Что-то уж больно много цветов теперь в дизайне бананолинзового сайтика :)
Alexander
PRs are welcome
Aleksei (astynax)
Хмм :) Челендж аксептед!
Aleksei (astynax)
Можно просто теги сделать красными, чтобы было "максимум три цвета" :)
Alexander
я вообще в дизайне инчего не понимаю, мне все равно
Alexander
=)
Leonid 🦇
Кто вообще подкасты не по рсс получает?
Alexander
я
Alexander
я их по /dev/null получаю
Alexander
только они скучные все
Евгений
Alexander
там они слишком много занимают
Евгений
В /dev/null ничего нету же
Leonid 🦇
Блокирует до появления же
Leonid 🦇
Или что будет на read из /dev/null?
Евгений
Любой read возвращает нуль байт
Leonid 🦇
А если его в epoll сунуть?
Евгений
Или EOF, интересно, что-то я забыл
Donat
Anonymous
Кто-нибудь может пояснить за использование Haskell в финансовой аналитике? Программы для анализа данных, написанные на нём, или любые другие примеры в этой сфере.
Речь необязательно про науку о данных, меня интересует связь с финансами и экономикой.
Leonid 🦇
@donat_kh антенапод стал подвисать что-то у меня
Dmitry
@maldoror93 а что именно пояснить?
Anonymous
Второе, конечно, любопытнее -- насколько Haskell (не)удобнее в этом деле Python'a, которым пользуются в науке о данных часто, или R.
Viacheslav
Vasiliy
а поскидывайте что-нибудь на эту тему?
ну, во-первых, http://chimera.labs.oreilly.com/books/1230000000929, там во второй части достаточно подробно расписано, как в целом исключения работают. ну и у сноймана посты в блоге: как, по его мнению, правильно подходить к обработке исключений https://www.fpcomplete.com/blog/2016/11/exceptions-best-practices-haskell , конкретно про проблему асинхронных исключений https://www.fpcomplete.com/blog/2016/06/async-exceptions-stm-deadlocks , анонс библиотеки для упрощения жизни с асинхронными исключениями https://www.fpcomplete.com/blog/2016/06/announce-safe-exceptions
Vasiliy
многие другие его посты тоже зачастую про конкурентность и исключения
Viacheslav
Спасибо
Alexander
но вообще обычно понимания, что такое Exception, AsynchronousException и заворачивания исключений в них вполне достаточно (safe-exceptions в общем-то это делает)
Alexander
и понимания что такое interruptible operations
Мерль
https://bananasandlenses.net//episode039.html
Viacheslav
Viacheslav
или она в целом познавательная
Alexander
одна из самых полезных ккнижек
Alexander
если хочется использовать concurrency в haskell то must read
Aleksei (astynax)
Aleksei (astynax)
Даёт понимание проблематики, возникающей в любом конкурентном коде
Viacheslav
кул, спасибо
Evgeny
Господа, такой вопрос. Как лучше читать TAPL, если хочешь научиться лучше разбираться и использовать существующие системы типов в ЯП? В том смысле, что нет планов создавать свои системы, а хочется в практическом аспекте их лучше чувствовать, выработать полезную интуицию. Как эффективнее подойти к этому вопросу? И вообще, TAPL ли?
Евгений
Когдя я учил type system ничего лучше на русском не было
Evgeny
А TAPL есть на русском? : )
Alex
http://newstar.rinet.ru/~goga/tapl/
Evgeny
Это вообще не важно, на самом деле.