code_notes
71 subscribers
136 photos
1 video
134 links
учусь делать веб

обратная связь: t.me/dmorenogogoleva
Download Telegram
если функция неизменно возвращает один и тот же результат для одних и тех же передаваемых ей входных значений, она обладает ссылочной прозрачностью.
Монады

Монада это проектный шаблон, применяемый для описания вычислений в виде последовательности стадий, где вообще неизвестно обрабатываемое значение

Сами монады абстрактны и лишены всякого реального смысла. Их истинный потенциал начинает раскрываться только после того, как они будут реализованы в виде конкретного типа данных
А вообще монада это такая обёртка

пример из реальной (около того) жизни:
есть у нас вот такой объект
из него нам нужно достать поле country
можно сделать так (совсем ужасно)
а вот так можно упростить жизнь монадой

(и даже optional chaining не нужен)
Option это такая монада из языка Scala и которую для этого примера я взяла из библиотеки ts-option

https://www.npmjs.com/package/ts-option

Отличная штука, на работе мы постоянно используем ее в редаксовских селекторах
тоже хорошая картинка
цикломатическая сложность любой программы может быть определена по формуле: M = E - N + P, где:

E — количество рёбер в потоке
N — количество узлов или блоков
P — количество узлов, имеющих точки выхода
Forwarded from Про
#react_perf

Ways to optimize runtime performance in react:

memo, useCallback
Virtualization
Web workers
Wasm
Offscreen canvas (canvas being sent to web worker) - crazy shit!
вчера на собесе попросили написать на листочке функцию, которая считает количество вызовов самой себя

на листочке очень просто запутаться со скобочками кстате
Хвостовая рекурсия

это такой способ оптимизации рекурсивных функций
вот обычная рекурсивная функция, которая вычисляет факториал
а вот она же после хвостовой оптимизации
что тут произошло?

мы добавили параметр cur в который записываем текущий результат

это позволяет уменьшить количество фреймов, хранимых в памяти
нашла хорошую картинку

слева — хвостовая рекурсия, справа — обычная

как мы видим, у хвостовой меньший уровень вложенности

картинка вот из этой статьи:
https://maxglassie.github.io/2017/08/24/tail-recursion.html
главная польза от иммутабельности в реальной жизни

когда мы следуем принципам иммутабельности, мы не мутируем объекты, а пересоздаем.

и когда после пересоздания мы сравниваем объекты, они оказываются разными (пушто на них разные ссылки) и так мы можем легко понять, что в объекте что-то изменилось
Значения с плавающей точкой

Чтобы определить значение с плавающей точкой, необходимо ввести десятичную
точку и как минимум одну цифру после нее.

10.1


Для хранения значений с плавающей точкой требуется вдвое больше памяти, чем для целых чисел и ECMAScгipt по возможности преобразует значения в целые числа. Если после десятичной точки нет разрядов, число становится целым.

Если значение не имеет дробной части (например, 1 .0), оно также преобразуется в целое число, например: