Антон
A64m
да это не особо важно, так для удобства сделано
Евгений
@qnikst, а спор о понятиях, кстати, в этом чате разрешается? По-моему это тема для блах :)
Alexander
хз
Евгений
Они устроены по разному
Alexander
Евгений
Ну и множествам ни то, ни другогое не изоморфно. Слава проблеме останова
Alexander
@beizero может возьмешь тайм-аут на перечитывание первых двух глав пирса?
Alexander
а то как-то по кругу пошло, тем более ты попросил определение, тебе привели, а ты дальше говоришь "как ты видишь", и хочешь чтобы согласились? и все по кругу идет
Alexander
(я может конечно не внимательно прочитал, что выше было)
Alexander
чот я токсичный сегодня
𝙱𝚎𝚒𝚉𝚎𝚛𝚘
Они устроены по разному
У Пирса к слову, определение системы типов даётся по предназначению, а не по устройству. Из устройства там только говориться о том, что это синтаксический способ, но даже в том же JS ты объекты разных типов(или называйте это как хотите) синтаксические описываете по разному. Я из Haskell могу выкинуть декларацию типов у функций и оставить только определения их поведения, а компилятор мне всё выведет, код будет выглядеть так будто у меня типов вообще нигде нет от этого они в общем-то никуда не денутся.
Антон
А вообще спать надо
Alexander
нет, я всегда добрый и пушистый, даже сегодня
Ilya
хз
а мог бы и бритвой полосонуть
Ilya
так что да, добрый
Антон
Alexander
Антон
D:
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
это тег который говорит как из типа суммы получить проекцию на одно из слагаемых
Alexander
для лучшего понимания пирса наверное подойдёт пример js и flow
Alexander
для Erlang тоже же был какой-то линтер, который пытался типы притащить
Alexander
вообще в целом в мире слово типы используется и в динамике и все привыкли, но лучше термины все же разделять
Cheese
Cheese
Anonymous
Alexander
Ох, такой срачик пропустил 😞
И да, Эрланг и Скала не ФЯ, так как не облегчают композицию функций. И да, Эрланг - это ООП в Алан Кеевском смысле
Vadim
Alexander
Alexander
Облегчение ФП = простая композиция + простое каррирование
Vadim
Cheese
Vadim
_не облегчает_
у тебя черезчур громкое заявление.Я как то особых аргументов не увидел
Alexander
Vadim
где правила группы?Я не вижу можно ли хуесосить людей
Alexander
Alexander
написанных правил нету и не будет. Руководствуйтесь common sense, и нормами общения в приличном обществе
Vadim
Alexander
саша
саша
саша
хотя второе уже не ФП, а метапрограммирование
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