Dika
const x = 2 f(x) x === 2 // true
Вот здесь f грязная: function f (obj) { obj.a = 5 } const x = { a: 3 } f(x) x.a === 3 // false
Denis
Я не согласен. Но я могу и ошибаться
Dika
https://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D0%B1%D0%BE%D1%87%D0%BD%D1%8B%D0%B9_%D1%8D%D1%84%D1%84%D0%B5%D0%BA%D1%82_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)
Игорь
Если вынести всё изменяемое в аргументы, то это считается чистой функцией
teamdale
о чем спор? непонял )
Игорь
о чем спор? непонял )
Что лучше Javascript или CSS
Максим
@Piterden я сделал, как вы сказали, я создал ветку, перешёл в неё и запушил на гитхб. Далее выбрал её в настройках на гитхабе, сохранил, перешёл по ссылке, а там всё та же иная страница, а мне нужна та, которая создаётся в папке dist при сборке проекта https://github.com/psywalker/learning-webpack/settings
Denis
Насколько это верно? (Не верно)
Denis
function addClass (el, className) { el.classList.add(className) return el } это чистая функция ^ function addClass (className) { el.classList.add(className) } Это грязная ^
Syntax Highlight Bot
Игорь
Ну тогда оператор присваивания чистый?
Побочное это изменяющее внешнюю среду. Если передать это внешнее в аргументах, оно не считается внешним и может изменяться внутри функции.
Denis
Помоему
Denis
Поправьте если не так
Denis
Надо исправить вики
Dika
Побочное это изменяющее внешнюю среду. Если передать это внешнее в аргументах, оно не считается внешним и может изменяться внутри функции.
Оно считается внешним, потому что к нему можно получить доступ извне. function f1 (windowVar) { windowVar.aaa = 3 } function f2 () { window.aaa = 3 } f1(window) f2() Нет никакой разницы, аргументом window или нет. Среда изменяется в любом случае. И ты не ответил на вопрос о операторе присваивания.
Максим
http://prntscr.com/mlxz2u - так?
Dika
Вопрос! this внутри класса - внешний?
Если функция изменяет объект this — да, это сайд-эффект
Denis
Так весь ООП грязный
Dika
Ну так и есть
Denis
Любой сеттер
Dika
Да. И оператор присваивания — тоже грязная функция.
Denis
Бля, жил зря(
Denis
Срочно фиксить вики
Максим
неа, я даже вот так сделал, всё равно ерунда "main": "dist/index.html",. Но я щас всё делаю в новой ветке, правильно? и как правльно прописать путь всё же?
Dika
Срочно фиксить вики
На вики все правильно написано, это вообще достаточно известная информация.
Игорь
"Example side effects include... ...modifying a mutable argument passed by reference"
Игорь
Факап
Игорь
Статьи по ФП считают иначе
Dika
Статьи по ФП считают иначе
Какие статьи по ФП?
Игорь
Ну тогда спросите чувака который писал, что шарит
Игорь
Какие статьи по ФП?
Обычные статьи по ФП
Dika
Ну покажи пример. Я не видел ни одной такой.
Dika
Хотя читал много.
Игорь
Игорь
"Внедрение зависимостей", ход конём
Denis
Съели?!
Игорь
Кто что съел
teamdale
Хотя читал много.
по ФП "реально чистые функции" - это которые ничего не делают и ничего не возвращают
Dika
"Внедрение зависимостей", ход конём
Так где здесь функция изменяет мутабельные объекты в аргументах?
Dika
f(x) = x * 2 — это не чистая функция?
Denis
Тут работает
Denis
Делай так же
Игорь
Так где здесь функция изменяет мутабельные объекты в аргументах?
Ок, там нет. Покажи как написать функцию изменения класса по всем канонам ФП
teamdale
что значит "ничего не возвращают"?
это недостижимый абсолют, это как квадрат малевича. нет такого. все чистые функ. принимают аргументы, что-то с ними делают и возвращают один и тот же результат при тех же входных параметрах.
Игорь
иммутабельно
Удалить и создать новый или что?
Denis
const f = (el) => 1 Чистая епта!!!
Syntax Highlight Bot
Игорь
Во всех подобных статьях для начинающих в ФП одни и те же примеры с x => x*2
Игорь
Как будто все только калькуляторы на ФП пишут
Dika
Denis
Да, это чистая
То есть чистая функция - это беспонтовая функция
Denis
)))
teamdale
Ок, там нет. Покажи как написать функцию изменения класса по всем канонам ФП
входные параметры имя тега например, всегда при таком имени тега будет изменять класс на "clearClss"
Игорь
Просто создать новый
А не лопнет, нет?
Dika
То есть чистая функция - это беспонтовая функция
Программы без сайд эффектов — бесполезные программы, которые ничего не делают и ничего не могут вывести
Dika
А (чистые) функции полезны для переиспользования и так далее.
Denis
Я шучу, @Bannerets я врубаюсь, однако затратно постоянно создавать новый
Denis
А (чистые) функции полезны для переиспользования и так далее.
Как же тогда правильно подписать мой пример?
teamdale
То есть чистая функция - это беспонтовая функция
нет. просто в программах реальных это не встречается. Поэтому все нечистые функции "работают" отдельно.
Denis
Надо боту забацать чтобы он много entities обрабатывал
Denis
А то он первую только ест
Dika
Во всех подобных статьях для начинающих в ФП одни и те же примеры с x => x*2
Компилятор — это, упрощенно, одна большая чистая функция
Максим
Тут работает
то есть нужно настраивать всякие тревисы и прочие вещи?