@haskellru

Страница 366 из 1551
Alexander
27.08.2017
18:30:10
как бы говоря совершенно точно что ты хочешь от системы

какой профит от вложенных типов, кроме того, что вывод типов ты сломаешь, и классы типов перестанут работать?

учитывая то, что классы типов это то, что делает язык полезным

мне кажется возможность говорить компилятору что ты от него хочешь это не большая цена, за нормальный язык

Google
Alexander
27.08.2017
18:41:36
кстати если хочется обобщить классы типов, то можно написать data C (c::Constraint) = forall x . c x=>

C x

Ilya
27.08.2017
18:41:45
Хорошо. В теории типов нет классов типов, но там есть вложенные типы. Там мы смогли бы написать data Wrap = Wrap Show И собрать список типа [Wrap "a", Wrap 1, Wrap True], который мы бы умели печатать на экран, и ничего больше. С-ма типов хаскеля по дефолту такое не может, но может с хаком, нужно расширение (GHC специфичное?) И констрейнты

Вот это я имел в виду под хаком

Alexander
27.08.2017
18:42:15
в теории типов нету классов типов, но есть вложенные типы - это как понимать?

Ilya
27.08.2017
18:43:28
Это ошибочное утверждение?

Alexander
27.08.2017
18:45:38
в теории типов есть как ad-hoc полиморфизм так и subtype полиморфизм

конкретная система типов может иметь одно, другое или ничего из

или оба

подробнее позже отпишусь, если никто раньше не сделает

Даниил
27.08.2017
21:09:50
Index
28.08.2017
04:33:56
Это ошибочное утверждение?
В теории типов есть все, что вообще формализовали когда-либо. Теория типов занимается изучением конкретных систем типов. А в них уже будут те фичи, которые автору захотелось.

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

Google
Index
28.08.2017
04:37:21
Haskell как язык не формализован нормально, так что с этой позиции можно половину его фич назвать хаком.

При этом все пользуются и всем хорошо.

Хотя и багов из-за этого тоже хватает. Это трейдофф между корректность и скоростью развития языка.

Вот констрейнты на экзистенциальные переменные реализованы уже невесть как давно, работают хорошо, и про них легко рассуждать операционно. В чем проблема не вижу.

Alexander
28.08.2017
06:37:37
учитывая, что они и руками без externsions реализуются

допустим есть словарь Foo a с методом foo :: a -> B -> X, тогда можно сделать структуру FooS [ foo :: B -> X } будет работать почти так же

более близкие вещи уже через расширения вроде

Denis
28.08.2017
07:09:49
https://bananasandlenses.net//episode039.html

Alexander
28.08.2017
07:22:31
блин, до нового года не продержались

Leonid
28.08.2017
07:24:24
Главное тебе теперь к четвергу подготовиться...

Dmitry
28.08.2017
07:25:10
а что в четверг?

Leonid
28.08.2017
07:39:57
https://spb-fp-meetup.timepad.ru/event/555708/

Alexander
28.08.2017
08:09:42
действительно

а там так же не прокатит?

Мерлин
28.08.2017
08:31:45
Новый выпуск Банананов и линз!

Donat
28.08.2017
08:35:16
woah

Aleksey
28.08.2017
08:54:10
Что-то уж больно много цветов теперь в дизайне бананолинзового сайтика :)

Alexander
28.08.2017
09:08:04
PRs are welcome

Aleksey
28.08.2017
10:56:02
Хмм :) Челендж аксептед!

Можно просто теги сделать красными, чтобы было "максимум три цвета" :)

Google
Alexander
28.08.2017
11:00:51
я вообще в дизайне инчего не понимаю, мне все равно

=)

Leonid
28.08.2017
11:01:41
Кто вообще подкасты не по рсс получает?

Alexander
28.08.2017
11:01:53
я

я их по /dev/null получаю

только они скучные все

Евгений
28.08.2017
11:05:53
я их по /dev/null получаю
Может по /dev/zero?

Alexander
28.08.2017
11:06:14
там они слишком много занимают

Евгений
28.08.2017
11:06:54
В /dev/null ничего нету же

Leonid
28.08.2017
11:07:47
Блокирует до появления же

Или что будет на read из /dev/null?

Евгений
28.08.2017
11:09:55
Любой read возвращает нуль байт

Leonid
28.08.2017
11:11:32
А если его в epoll сунуть?

Евгений
28.08.2017
11:13:18
Или EOF, интересно, что-то я забыл

Мерлин
28.08.2017
13:19:36
Кто вообще подкасты не по рсс получает?
Я через Player FM, он через твитер умеет и soundcloud

maldoror93
28.08.2017
14:32:03
Кто-нибудь может пояснить за использование Haskell в финансовой аналитике? Программы для анализа данных, написанные на нём, или любые другие примеры в этой сфере. Речь необязательно про науку о данных, меня интересует связь с финансами и экономикой.

Leonid
28.08.2017
14:42:22
@donat_kh антенапод стал подвисать что-то у меня

Donat
28.08.2017
14:46:43
@donat_kh антенапод стал подвисать что-то у меня
у меня тоже на медленном канале тормозит иногда

Dmitry
28.08.2017
14:47:35
@maldoror93 а что именно пояснить?

maldoror93
28.08.2017
14:49:16
@maldoror93 а что именно пояснить?
Знает ли кто-либо примеры такого ПО (желательно с открытым кодом) или может быть даже участвовал в чём-то подобном.

Google
maldoror93
28.08.2017
14:50:13
Второе, конечно, любопытнее -- насколько Haskell (не)удобнее в этом деле Python'a, которым пользуются в науке о данных часто, или R.

Vasiliy
29.08.2017
06:10:11
а поскидывайте что-нибудь на эту тему?
ну, во-первых, 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

многие другие его посты тоже зачастую про конкурентность и исключения

Vyacheslav
29.08.2017
07:12:42
Спасибо

Alexander
29.08.2017
07:19:47
но вообще обычно понимания, что такое Exception, AsynchronousException и заворачивания исключений в них вполне достаточно (safe-exceptions в общем-то это делает)

и понимания что такое interruptible operations

Мерлин
29.08.2017
09:28:43
https://bananasandlenses.net//episode039.html

Alexander
29.08.2017
10:10:22
одна из самых полезных ккнижек

если хочется использовать concurrency в haskell то must read

Aleksey
29.08.2017
10:32:36
или она в целом познавательная
в целом познавательная

Даёт понимание проблематики, возникающей в любом конкурентном коде

Vyacheslav
29.08.2017
11:12:39
кул, спасибо

Evgeny
29.08.2017
14:24:28
Господа, такой вопрос. Как лучше читать TAPL, если хочешь научиться лучше разбираться и использовать существующие системы типов в ЯП? В том смысле, что нет планов создавать свои системы, а хочется в практическом аспекте их лучше чувствовать, выработать полезную интуицию. Как эффективнее подойти к этому вопросу? И вообще, TAPL ли?

Евгений
29.08.2017
14:25:41
Когдя я учил type system ничего лучше на русском не было

Evgeny
29.08.2017
14:29:48
А TAPL есть на русском? : )

Alex
29.08.2017
14:30:05
http://newstar.rinet.ru/~goga/tapl/

Evgeny
29.08.2017
14:30:10
Это вообще не важно, на самом деле.

Google
Evgeny
29.08.2017
14:31:07
А если не привязываться к наличию локализованной версии?

Vyacheslav
29.08.2017
14:31:35
то тоже лушее, что есть, мне кажется

Denis
29.08.2017
14:32:53
А есть DTAPL?)

kana
29.08.2017
15:13:03
Как тут относятся к рекламе каналов? Я только изучаю фп, теорию типов, категорий, прочее. Во время изучения все, что я узнал, пытаюсь упорядочить в виде постов. Когда пытаешься что-то объяснить, то понимаешь все намного лучше. Раньше я их в свою группу кидал, но сегодня начну кидать в канал в телеге.

Dmitry
29.08.2017
15:13:52
смотря каких каналов.

думаю, что ссылка на канал по ФП - это нормально

kana
29.08.2017
15:14:55
https://t.me/kanaflow

Андрей
29.08.2017
15:15:45
и много у тебя участников / подписчиков?

kana
29.08.2017
15:16:01
ну собственно пример поста (в данный момент я изучаю зависимые типы, но данный пост необходим для старта)

ADT - произведение и копроизведение типов Тип можно трактовать как множество значений. Мощность типа - количество элементов в этом множестве. Произведение типов - декартово произведение множеств, то есть множество всех возможных пар, где первый элемент - элемент первого множества, а второй - второго. A = {a, b, c} B = {x, y} A×B = {(a, x), (a, y), (b, x), (b, y), (c, x), (c, y)} Мощность произведения двух множеств равна произведению мощностей множителей. |A × B| = |A| × |B| Пример в хаскеле: -- тут мы говорим, что `x` -- имеет тип `(Int, String)` x :: (Int, String) -- а тут мы говорим, какое у -- x значение x = (1, "hello") -- делаем тип IntStringPair -- значение которого является пара -- из числа и строки. -- Для создания значения этого типа -- используется конструктор MkIntStringPair -- который принимает число и строку -- и создает элемент типа IntStringPair data IntStringPair = MkIntStringPair Int String y :: IntStringPair y = MkIntStringPair 1 "hello" -- Конструктор и тип могут иметь -- одно название, они не будут -- пересекаться, ведь типы можно -- использовать только в сигнатуре, -- а конструкторы только в выражениях data Triple a b c = Triple a b c z :: Triple Int String Int z = Triple 1 "hello" 2 Меченное объединение, сумма или же копроизведение типов - объединение двух множеств так, что каждый элемент нового множества помечается исходным множеством, благодаря чему новый тип будет содержать все копии значений из исходных множеств. A = {1, 2, 3} B = {3, 4} A + B = {A 1, A 2, A 3, B 3, B 4} Как видно, каждый элемент нового множества помечен исходным множеством, поэтому число 3 встречается дважды, ведь A 3 ≠ B 3. Очевидно, мощность такого типа равна сумме мощностей слогаемых. |A + B| = |A| + |B| В хаскеле суммы типов создаются с помощью символа | в определении типа (или же с помощью определений конструкторов с GADTs). data Either a b = Left a | Right b x, y :: Either Int String x = Left 10 y = Right "hello" data Bool = False | True -- изоморфно Either () () -- где () - единичное множество, -- то есть множество из одного элемента -- () = {()} -- (Важно не путать ()-тип и ()-значение) z, u :: Bool z = False -- Left () u = True -- Right ()

Denis
29.08.2017
15:16:14
https://t.me/kanaflow
аахах про списки мне это что-то напомнило)

kana
29.08.2017
15:16:15
ну в группе 170, в канале, который ток создал, 14

да, впервые увидел у тебя)

потом в теоркате для программистов

Denis
29.08.2017
15:17:08
да, впервые увидел у тебя)
вообще лучще про алгебру типов прочитай)

Страница 366 из 1551