Дмитрий! ;) 11:55 - генерация псевдо-случайного числа -- это нечистая функция, т.к. не выполняется требование ссылочной прозрачности (иными словами нет гарантии получения одного и того-же результата при повторном вызове с теми-же аргументами). Любая функция, результат которой зависит от результата нечистой функции, так же не будет чистой. Поэтому shuffle -- это нечистая функция. Вместе с тем, пример важный и правильный, но лучше надо было взять функцию reverse
На 11:00 показан пример якобы чистой функции, которая на самом деле не является чистой, поскольку она является недетерминированной (для одного и того же набора входных данных результат может быть разным)
@@19n1ght Там ещё на 17:28 мне показалось, что проблема будет не только в наличии undefined, но и в несовместимости типов User[] и User. Не придирка, просто решил "подсветить". Доклад очень понравился, спасибо
Да, я ошибся в этом моменте, обратил внимание на сигнатуры вверху слайда и не вник в код ниже. Показалось, что в пайпе после вызова первой функции будет на выходе массив
@@maxm1nd Ютуб безжалостно удаляет сообщения, в которых есть код или ссылки :)) Спасибо Вам больше за комментарии! Я в предыдущем (удаленном ютубом сообщении) писал, что там используется метод find, который возвращает T | undefined. Если бы был, например, метод filter, тогда да, был бы массив.
Крутий чувак!! Подача на високому рівні)
Спасибо :)
спасибо! шикарно объяснил!
Благодарю :)
Дмитрий! ;)
11:55 - генерация псевдо-случайного числа -- это нечистая функция, т.к. не выполняется требование ссылочной прозрачности (иными словами нет гарантии получения одного и того-же результата при повторном вызове с теми-же аргументами). Любая функция, результат которой зависит от результата нечистой функции, так же не будет чистой. Поэтому shuffle -- это нечистая функция. Вместе с тем, пример важный и правильный, но лучше надо было взять функцию reverse
Да, Вы правы. Тут я напутал. Спасибо :)
На 11:00 показан пример якобы чистой функции, которая на самом деле не является чистой, поскольку она является недетерминированной (для одного и того же набора входных данных результат может быть разным)
Да, Вы правы.
Выбрал не лучший пример для того, чтобы показать, что внутри могут быть мутации.
@@19n1ght Там ещё на 17:28 мне показалось, что проблема будет не только в наличии undefined, но и в несовместимости типов User[] и User. Не придирка, просто решил "подсветить". Доклад очень понравился, спасибо
Да, я ошибся в этом моменте, обратил внимание на сигнатуры вверху слайда и не вник в код ниже. Показалось, что в пайпе после вызова первой функции будет на выходе массив
@@maxm1nd Ютуб безжалостно удаляет сообщения, в которых есть код или ссылки :))
Спасибо Вам больше за комментарии!
Я в предыдущем (удаленном ютубом сообщении) писал, что там используется метод find, который возвращает T | undefined. Если бы был, например, метод filter, тогда да, был бы массив.
QR-код на 36:00 битый, ссылка нерабочая. Комментарий со ссылкой не публикуется. Добавьте сюда прямую ссылку, пожалуйста
Попрошу владельца канала добавить ссылку в описание.
Добавил - github.com/dkhovrich/fp-ts-talk-code
const getCurrentDateIso = (): string => new Date().toISOString()
А где здесь побочный эффект?
Тут скорее нечистая функция. Некоторые источники пишут, что нечистая функция === сайд эффект.
Побочный эффект - при каждом вызове разный результат. Т.е. функция взаимодействует с внешним миром, чтобы получить результат.