A64m
да это не особо важно, так для удобства сделано
Anonymous
он в streaming и объявлен
http://hackage.haskell.org/package/streaming-0.2.1.0/docs/Data-Functor-Of.html 👍
Евгений
@qnikst, а спор о понятиях, кстати, в этом чате разрешается? По-моему это тема для блах :)
Alexander
хз
𝙱𝚎𝚒𝚉𝚎𝚛𝚘
"Динамические типы" и "Статические типы" только тем общи, что это CS аналоги множества
Выглядят одинаково, предназначены для одного и того же, с некоторыми оговорками изоморфны множествам, но при этом СОВЕРШЕННО РАЗНЫЕ ВЕЩИ.
Евгений
Они устроены по разному
Евгений
Выглядят одинаково, предназначены для одного и того же, с некоторыми оговорками изоморфны множествам, но при этом СОВЕРШЕННО РАЗНЫЕ ВЕЩИ.
Всегда важно не практическая применимость, не внешний вид, а устройство. Иначе бы стоило признать колибри более близкими бабочкам, чем орлам
Евгений
Ну и множествам ни то, ни другогое не изоморфно. Слава проблеме останова
Alexander
@beizero может возьмешь тайм-аут на перечитывание первых двух глав пирса?
Alexander
а то как-то по кругу пошло, тем более ты попросил определение, тебе привели, а ты дальше говоришь "как ты видишь", и хочешь чтобы согласились? и все по кругу идет
Alexander
(я может конечно не внимательно прочитал, что выше было)
Alexander
чот я токсичный сегодня
𝙱𝚎𝚒𝚉𝚎𝚛𝚘
Они устроены по разному
У Пирса к слову, определение системы типов даётся по предназначению, а не по устройству. Из устройства там только говориться о том, что это синтаксический способ, но даже в том же JS ты объекты разных типов(или называйте это как хотите) синтаксические описываете по разному. Я из Haskell могу выкинуть декларацию типов у функций и оставить только определения их поведения, а компилятор мне всё выведет, код будет выглядеть так будто у меня типов вообще нигде нет от этого они в общем-то никуда не денутся.
Антон
чот я токсичный сегодня
По моему, не только сегодня
Антон
А вообще спать надо
Alexander
нет, я всегда добрый и пушистый, даже сегодня
Ilya
хз
а мог бы и бритвой полосонуть
Ilya
так что да, добрый
Alexander
Не бреешься?
а то, уже лет 10(?)
Антон
D:
𝙱𝚎𝚒𝚉𝚎𝚛𝚘
естественно по предназначению. А устройство уже любое может быть если выполнено предназначение - в динамических языках оно не выполнено
Why? Если у меня не JS или что настолько же типобезумное, то язык всё ещё даёт гарантии того, что не будет исполнять бред, что и является предназначением системы типов, нет? Про то, что всё должно чекаться во время компиляции в определении даже у Пирса нет.
Alexander
язык не даёт гарантии что твоя программа, которая хочет делать бред - будет принята
Alexander
типы в js это flow и вот это все
Alexander
а не то, что внутри самого js
Alexander
точно так же если бы в Haskell была только одна ADT: data Q = I Int | T Text ...
Alexander
то ты бы мог написать: plus (I i) (I j) = I (I+j) plus _ _ = error "bad tags"
Alexander
это бы не были типы, а была бы проверка тегов
Alexander
тоже самое происходит в динамических языках
Alexander
причем нельзя сказать что это ПЛОХО, это просто есть
Alexander
если взять того же пирса, то у него описаны формы полиморфизма доступные только в динамических языках
Alexander
так ты можешь в рантайме гарантировано узнать теги типов и в зависимости от тегов выполнить или сгенерировать определенный код
Alexander
причем мощность тегов может быть достаточно большой
Alexander
так это могут быть определенные ограничения на значение, информация о вложенности в другие типы и т.п.
Alexander
механизм достаточно мощный, переизобретать который типами может быть сложно
𝙱𝚎𝚒𝚉𝚎𝚛𝚘
это бы не были типы, а была бы проверка тегов
ADT по определению это сумма типов произведений. I Int, T Text, I, T таки будут являться типами по определнию ADT, насколько сильно это бы не ломало гарантии корретности программы написанной в таком стиле.
Alexander
типами по определению ADT?! WUT?
Alexander
какому к черту определению?!
Alexander
давай ты уже тоже ссылками на статьи и книги общаться будешь?
𝙱𝚎𝚒𝚉𝚎𝚛𝚘
ADT это тип равный сумме типов-произведений, разве нет?
Alexander
у нас есть Q - конструктор типа и I, T - конструкторы данных
Alexander
промоушн немного ломает эту аккуратную вещь, но можно его игнорировать пока
Alexander
так I :: Int -> Q, принимает параметр типа Int и создаёт данные типа Q
Alexander
типа I нигде нету
Alexander
это тег который говорит как из типа суммы получить проекцию на одно из слагаемых
𝙱𝚎𝚒𝚉𝚎𝚛𝚘
типа I нигде нету
Ок. Тут я прогнал, I не тип.
Alexander
для лучшего понимания пирса наверное подойдёт пример js и flow
Alexander
для Erlang тоже же был какой-то линтер, который пытался типы притащить
Alexander
вообще в целом в мире слово типы используется и в динамике и все привыкли, но лучше термины все же разделять
Anonymous
Alexander
Ох, такой срачик пропустил 😞 И да, Эрланг и Скала не ФЯ, так как не облегчают композицию функций. И да, Эрланг - это ООП в Алан Кеевском смысле
Alexander
Облегчение ФП = простая композиция + простое каррирование
Cheese
Облегчение ФП = простая композиция + простое каррирование
а Лисп как облегчает? или он тоже не функциональный?
Vadim
_не облегчает_
у тебя черезчур громкое заявление.Я как то особых аргументов не увидел
Vadim
где правила группы?Я не вижу можно ли хуесосить людей
Alexander
где правила группы?Я не вижу можно ли хуесосить людей
правил нету, использование слова "хуесосить" и дискуссии в таком стиле точно запрещены. С пассивной агрессией и обидами - сложнее, их детектить сложно
Alexander
написанных правил нету и не будет. Руководствуйтесь common sense, и нормами общения в приличном обществе
Alexander
Cheese
а вы о каком конкретно лиспе?
о тех из них, которые считаются функциональными. Схема, Кложа, наверно
саша
о тех из них, которые считаются функциональными. Схема, Кложа, наверно
ну тогда "всё есть выражение", "код как данные"
саша
хотя второе уже не ФП, а метапрограммирование
Cheese
ну тогда "всё есть выражение", "код как данные"
как это связано с функциональщиной и облегчением?
саша
собственно лиспы это же не про ФП, а про метапрограммирование
Cheese
а как же первая реализация лямбда-исчисления?
A64m
фп - это такое местечковое шотландское явление, даже эдинбуржское все что происходит из работ милнера, тернера и работающих над нпл - фя, остальное нет.
A64m
(т.е. тернер-то выбивается из этого географического правила, но у остальных все в порядке с этим)
IC
> stack new now allows template names of the form username/foo to download from a user other than commercialstack on Github, and can be prefixed with the service github:, gitlab:, or bitbucket:. Так сломим царство гитхаба ростовщического. Только в такие инструменты не стыдно веровать.
Vladislav
Я это просто к тому, что мощь системы типов не обязательно соседствует с их статической проверкой.
Типы это разновидность статического анализа, которую плюс-минус понятно как реализовывать.