

Дмитрий
08.10.2017
12:00:57
Да ясен красен
const True = t => f => t
const False = t => f => f
const If = b => t => f => b (t) (f)
console.assert(1 == If (True) (1) (2))
console.assert(2 == If (False) (1) (2))
Not = x => If (x) (False) (True)
And = x => y => If (x) (y) (False)
Or = x => y => If (x) (True) (y)
И короче погнали
Определяем числа:
Zero = s => z => z
One = s => z => s (z)
Two = s => z => s (s (z))
Операции над ними:
IsZero = n => n (_ => False) (True)
Lte = n => m => IsZero (Sub (n) (m))
Lt = n => m => Lte (Succ (n)) (m)
Фолд:
const Foldr = f => z => l => l (f) (z)
Операции над списками:
const Append = a => l => (f => x => f (a) (l (f) (x)))
const Head = l => l (a => _ => a) ()
const list = Append (1) (Append (2) (Nil))
const Map = m => l => (f => x => l (a => f (m (a))) (x))
const Length = l => Foldr (_ => Succ) (Zero) (l)
Определяем комбинатор неподвижной точки
Z = f => (x => f (y => x (x) (y)))
(x => f (y => x (x) (y)))
Теперь можем определить поиск остатка от деления
Rem = Z (rem => n => m => (
If (Lt (n) (m)) (_ => n)
(_ => rem (Sub (n) (m)) (m))
) ())

Google

Дмитрий
08.10.2017
12:01:55
Здорово как, правда

Denis
08.10.2017
12:01:58
И чё? У меня покруче) как изо для неподвижного функтора лямбда типа

Дмитрий
08.10.2017
12:02:00
Удобно
Давай весь жс так перепишем, смотри какой апи короткий, че хочешь делай)

Denis
08.10.2017
12:03:39
Кодировка Черча как раз это самое естественное понятие и все можно заэнкодить, а индуктивность и коиндуктивность можно используя простой лямбда тип и рекурсивную схему что тоже естественное понятие

Дмитрий
08.10.2017
12:04:05
Свежо предание

Denis
08.10.2017
12:06:08
Мне как-то пофиг) пишу на хаскель слушаю мешугу)

Дмитрий
08.10.2017
12:06:24
Ну это по выходным
Мишуга уже не та, бтв

Denis
08.10.2017
12:06:40
Когда пишу на жс слушаю граинд)
Да как раз последний альбом норм

andretshurotshka?❄️кде
08.10.2017
13:16:24
лол

Google

Aleh
08.10.2017
13:19:40
Типа пролога язык получается

illiatshurotshka❄️
08.10.2017
13:21:58
видел на руби подобное оч давно

Kelin
08.10.2017
14:09:33

kana
08.10.2017
14:12:29
Знаком кто с орнаментами?

Denis
08.10.2017
14:13:55
страшна https://github.com/kategory/kategory/blob/master/kategory-recursion/src/main/kotlin/kategory/recursion/typeclass/Recursive.kt

kana
08.10.2017
14:14:20
Значки?
У меня просто куча пейперов по орнаментам страниц по 50, все на агде, читать страшно, а проблему решают вроде важную

Denis
08.10.2017
14:29:20

kana
08.10.2017
14:31:05
Реюзабельность функций, как я понял. Ну, это было на первых страницах одного пейпера. Шоб не писать один и тот же take/fold для списков, векторов, а как бы наслаивать типы друг на друга
То есть построение типов из конструктора слой за слоем
Хотя во многих случаях фолды и мапы можно задерайвить, а остальные функции писать на их основе, но это решение уровня генереков плюсов

Kelin
08.10.2017
19:25:32
Смотрите, какая тема
В объекте есть метод, который принимает функцию. В функции аргумент - этот самый объект, и его можно мутировать.
Только flow ругается, если я пытаюсь добавить новое свойство в объект. Как быть? Он же должен ругаться только на exact
собственно, вот

andretshurotshka?❄️кде
09.10.2017
02:14:50
лол
че за ошибка

Google

Дмитрий
09.10.2017
02:15:28
С мутациями всегда проблема
И ето хорошо, нечего мутировать ?

andretshurotshka?❄️кде
09.10.2017
03:45:59
еее мутирую
Любит наш народ ~всякое говно~ стейт мутировать. Причин для этого нет, но люди упорно пишут всякие пушы и прочее, когда этого можно не делать
— Опять мутируешь, пёс
Мам,я не мутировал, друзья мутировали,а я просто рядом стоял

Kelin
09.10.2017
05:35:58
Ну такой вот кейс, шо уж поделать
Решил проблему добавлением [string]: any

Дмитрий
09.10.2017
06:05:35
Всегда так делаю

Kelin
09.10.2017
06:09:42
Ля, то все пишут, что везде должны быть строгие типы и никаких any
Потом выясняется, что всем похуй ?

Дмитрий
09.10.2017
06:31:11
На самом деле реально достаточно не мутировать объект, чтобы флоу в твоём случае начал выводить типы даже без твоей помощи
Ты меняешь сам тип объекта на лету, что нужно указывать отдельно, что — отстой. Если ты не меняешь тип объекта а спредишь его в новый, то тип нового автоматически выводится как твой тип + поле
Все беды от старых привычек

illiatshurotshka❄️
09.10.2017
06:38:23

Дмитрий
09.10.2017
06:38:52
Потому что он смирился со своей насквозь мутабельной сущностью
Спасибо, что поинтересовался, хороший кейс того как не надо
(какой вопрос — такой и ответ)

Kelin
09.10.2017
06:40:38

Дмитрий
09.10.2017
06:40:47
А ты проверял?

Google

Дмитрий
09.10.2017
06:41:41

andretshurotshka?❄️кде
09.10.2017
06:42:43
Типизируй как бабочка, жаль я тайпскрипт

Дмитрий
09.10.2017
06:43:04
Хайпскрипт

andretshurotshka?❄️кде
09.10.2017
06:43:12
Антихайпскрипт

Дмитрий
09.10.2017
06:43:17
?

andretshurotshka?❄️кде
09.10.2017
06:44:01

Lulz
09.10.2017
06:44:28

andretshurotshka?❄️кде
09.10.2017
06:44:44

illiatshurotshka❄️
09.10.2017
06:44:56

andretshurotshka?❄️кде
09.10.2017
06:46:43
ща бы сравнить раст и жс, wait OH SHI~

illiatshurotshka❄️
09.10.2017
06:47:04
рофлл

Дмитрий
09.10.2017
06:47:19

illiatshurotshka❄️
09.10.2017
06:47:44

Дмитрий
09.10.2017
06:47:49
Сзади purescript в судьях
Ты понимаешь, что ты не можешь охватить все случаи сразу?
Никак
Да, вообще никак

Google

Дмитрий
09.10.2017
06:48:29
Да, твои любимцы тоже
Попытайся себе это представить

illiatshurotshka❄️
09.10.2017
06:48:43
щас бы придумывать оправдания к некорректной работе программы

Дмитрий
09.10.2017
06:49:18
Окей, в следующий раз я просто не буду отвечать ни на какие вопросы со словом раст
Базара 0
У тебя всё по одному сценарию, надоело уже

andretshurotshka?❄️кде
09.10.2017
06:49:42

Kelin
09.10.2017
06:50:02
В данном кейсе я не вижу ничего плохого в мутации
Есть либа, и плагины, которые будут ставиться таким образом
Тип, нигде больше мутаций нет
Это не дело "привычки"

Дмитрий
09.10.2017
06:50:07

Kelin
09.10.2017
06:50:11
Шо ж вы сразу хуесосить

illiatshurotshka❄️
09.10.2017
06:50:27

Дмитрий
09.10.2017
06:50:35
Нет конечно

illiatshurotshka❄️
09.10.2017
06:51:06

Дмитрий
09.10.2017
06:51:43
Если я не стал рассказывать решение, то это не значит, что его нет, я упомянул то что мне важнее

Kelin
09.10.2017
06:51:57
В данном кейсе я не вижу проблем с мутацией, наоборот, норм

illiatshurotshka❄️
09.10.2017
06:52:02
оо
ну непонятно с чьей стороны проблема

Дмитрий
09.10.2017
06:53:24
Проблема решается описанием типа, в котором требуемое поле существует, и имеет maybe тип, я просто искренне считаю что это совершенно не правильно и он не должен так делать

Kelin
09.10.2017
06:53:39
Проблемы нет никакой, я хз что вы возмущаетесь

Дмитрий
09.10.2017
06:53:51
Дискутируем