
andretshurotshka?❄️кде
20.12.2017
01:37:06
https://github.com/joneshf/elm-comonad

Дмитрий
20.12.2017
01:38:39
tyler the creator

andretshurotshka?❄️кде
20.12.2017
01:38:48
tyrell

Google

andretshurotshka?❄️кде
20.12.2017
01:40:05
https://github.com/dallaylaen/types-for-dummies

Дмитрий
20.12.2017
01:40:43
Пора переходить на скалу
Вот бэкенд офигеет

andretshurotshka?❄️кде
20.12.2017
01:42:02
>A porting of safe-money (Haskell)
все ясно с gcanti

Дмитрий
20.12.2017
01:42:21
?
Чекнул его резюме кстати и сделал вывод что у него просто много свободного времени
Ввиду чего серьезно решил попробовать заюзать его стафф вместо apropos

andretshurotshka?❄️кде
20.12.2017
01:44:33
kjk

Дмитрий
20.12.2017
01:44:54
Я просто так подумал — за ним ж всё равно не угнаться
"Карочи, забирай свои монадки"

andretshurotshka?❄️кде
20.12.2017
01:49:27
kjk

Google

Дмитрий
20.12.2017
01:50:35
Хз
У меня кстати была мысль что вообще гшоворя, там абстрактный тайпкласс как бы и не нужен
А хотя не, генерить 2^20 комбинаций не вариант
Надо зафорсить static-land
Это самый топчик, ему даже отдельные типы данных не нужны

andretshurotshka?❄️кде
20.12.2017
01:54:33
а полиморфизм куда

Дмитрий
20.12.2017
01:55:10
Хз(

andretshurotshka?❄️кде
20.12.2017
01:55:25
s/static-land/purescript/

Дмитрий
20.12.2017
01:56:32
Хм, а кстати можно же просто либы из пурсы заюзать, а в жс типизировать только поверхностно
У меня просто сейчас по ощущениям то же состояние которое было перед тем как я забодался воевать со списками и взял immutable.js

Даниил
20.12.2017
03:05:28
заюзать пурсу
?
а подожди или я неправильно тебя понял, хз
я короче подумал что ты хочешь типо как mori, которое просто либы кложи в жс, только вместо кложи пурса

Дмитрий
20.12.2017
03:07:33
Ну
Нельзя весь код одномоментно переписать на пурсу ровно так же как нельзя сначала выключить типы, потом переписать на другой язык не глядя ничего не сломав
Есть места в которых я ошибаюсь в сотне строк кода даже вчитываясь и перепроверяя по пол дня)
Ввиду чего любые плохие типы лучше чем никакие вообще в момент который наверняка затянется надолго
Я бы реально подключал пурсу в проект прямо сейчас если бы можно было просто выписать в нее чисто новые, особо критичные участки кода при этом не танцуя ритуальный интероп каждый раз когда потребуется подключить новый фрагмент

Даниил
20.12.2017
03:31:51

Дмитрий
20.12.2017
03:32:51
Нужна новая парадигма для авторов языков: ваш язык это всего лишь модуль в жс проекте

Google

Дмитрий
20.12.2017
03:32:55
Тогда заживём
Ты же просто модуль, компиляция в джаваскрипте. Разве может пурскрипт написать [Object object], сделать function is not a function?

Даниил
20.12.2017
03:37:10

Дмитрий
20.12.2017
03:42:19
lingua franca

Даниил
20.12.2017
03:49:09
вообщее
это уже есть
только джава вместо жс

Дмитрий
20.12.2017
03:49:55
Ну да

Даниил
20.12.2017
03:50:08
там же не должно быть никаких проблем с тем чтобы впихнуть джаву, котлин, скалу, кложу и какой-нибудь хаскель-на-жвм (я забыл как они называются) в один проект
вот

Дмитрий
20.12.2017
03:50:15
Джава сделала своё дело, джава может уходить)

Даниил
20.12.2017
03:50:28
а потом компилить байткод jvm в жс

Даниил
20.12.2017
03:50:38
профит

Дмитрий
20.12.2017
03:50:52
Не, это тоже уже проходили, это не вариант ?
Отсутствие совместимости это фича
А то притащат в жс свой энтерпрайз кроваво-императивный

andretshurotshka?❄️кде
20.12.2017
04:40:03
Втф

illiatshurotshka❄️
20.12.2017
06:26:30

kana
20.12.2017
06:30:23
ну там andThen есть, а опечатка это опечатка

andretshurotshka?❄️кде
20.12.2017
06:39:08
monannddndn

illiatshurotshka❄️
20.12.2017
06:45:18
кто вообще придумал название andthen

Google

Denis
20.12.2017
06:46:06
https://stepik.org/course/2294/

kana
20.12.2017
06:46:07
ну имхо норм же

andretshurotshka?❄️кде
20.12.2017
06:50:01

kana
20.12.2017
10:37:25
https://www.cis.upenn.edu/%7Ejusthsu/docs/nokinds.pdf
https://www.seas.upenn.edu/%7Esweirich/papers/systemd-submission.pdf
два интересных и не сильно сложных (пока что, прочитал половину обоих пейперов) пейпера
- первый про System FC (расширение System F, про которое вы уже тут знаете все наверное) и какое-то его улучшение (пруфы равенств каиндов, как пруфы равенств типов a ~ b)
- второй про System DC, который для завтипов и пока только в виде пейпера как я понял

andretshurotshka?❄️кде
20.12.2017
10:51:11
Systemd

? animufag ?
20.12.2017
10:52:28
да раньше столько шуму было от людей которых вообще линукс не касался

kana
20.12.2017
10:55:23
если в хаскель завтипы завезут это же как круто будет-то

Admin
ERROR: S client not available

? animufag ?
20.12.2017
10:58:19
думаю будет такой c++ где все пишут как хотят

kana
20.12.2017
10:59:30
то есть как сейчас

? animufag ?
20.12.2017
10:59:40
ну или ещё какая-нибудь дичь типа пруфы которые невозможно разрешить и trust_me
ну да


kana
20.12.2017
11:19:14
- первый про System FC (расширение System F, про которое вы уже тут знаете все наверное) и какое-то его улучшение (пруфы равенств каиндов, как пруфы равенств типов a ~ b)
- второй про System DC, который для завтипов и пока только в виде пейпера как я понял
первая половина пейпера (про равенство типов в SFC):
a ~ b :: Constraint - пруф, что тип a равен типу b в виде констрейта. Констрейты можно рассматривать как имплиситные аргументы. Поэтому когда мы имеем такой GADT
data TyRep :: * where
TyInt :: TyRep Int
TyBool :: TyRep Bool
то TyInt будет иметь тип a ~ Int => TyRep a (то есть TyInt это конструктор, где первый элемент - пруф, что a ~ Int, после компиляции этот пруф стирается), поэтому в принципе любой GADT можно переписать в виде обычного ADT с такими констрейтами.
Имея x :: t1 и пруф c = t1 ~ t2 мы можем скастовать x в t2, синтаксис такой (x |> c) :: t2.
имея функцию
f :: TyRep a -> a
f TyInt = 0
f TyBool = False
мы как бы кастим 0 в a через пруф sym (a ~ Int), где sym (a ~ b) = b ~ a, то есть
3 :: Int |> sym (a ~ Int) =
3 :: Int |> Int ~ a =
3 :: a
Сам a ~ Int неявно достается из TyInt в паттерн метчинге (точно так же как мы достаем x из Just x, только неявно).
Аналогично для TyBool
вот это все - треть пейпера, только очень затянуто, а ведь все просто
сам пейпер про то, как эту же логику перенести на каинды
то есть имея тип t :: k1 и пруф c = k1 ~ k2 сделать t |> c :: k2


? animufag ?
20.12.2017
11:22:57

Google

andretshurotshka?❄️кде
20.12.2017
11:24:12
че

kana
20.12.2017
11:33:03
возможно речь про mfix :: (a -> m a) -> m a

? animufag ?
20.12.2017
11:46:33
да тут нормально всё
import Control.Monad.Fix (fix)
просто объяснение тупое
типа лучше бы просто не комментировал этот код
можно сделать канал "Короче, пейперы"
чем отличается от твоего канала?

kana
20.12.2017
11:48:01
а так это будет канал с сылкой на пейпер и кратким содержанием от меня после прочтения
все равно я его буду куда-то писать, чтобы закрепить

adam
20.12.2017
11:48:57

kana
20.12.2017
11:49:37
и что
не понял вопроса, то есть и что? Что и что?

adam
20.12.2017
11:50:27
Если ты в конце поста еще даш ссылку на пейпер, то отличий от основного все равно не будет

kana
20.12.2017
11:52:07
хм
но раньше же было не под пейперы
Add * :: *. Why do this? One alternative is to go the route of Coq and Agda and have an infinite tower of type universes. But, this adds a lot of complexity. These languages take this route because * :: * makes a language inconsistent as a logic. However, Haskell is already inconsistent as a logic (because of undefined and GHC.Exts.Any) and so we don't have to worry about a new source of inconsistency.
В roadmap про завтипы в хаскеле.
"Если мы введем * :: * вместо иерархии универсумов, то это сломает логику, но в хаскеле она и так сломана, так что нечего волноваться"

andretshurotshka?❄️кде
20.12.2017
14:15:28
выглядит как * + * из css

illiatshurotshka❄️
20.12.2017
14:15:47
это что

andretshurotshka?❄️кде
20.12.2017
14:15:52
lobotomized owl

illiatshurotshka❄️
20.12.2017
14:16:13
а точно * это же селектор