169 похожих чатов

Ну, смотри, во-первых, я не утверждаю, что Maybe — это

плохо.
Я утверждаю, что если ты будешь писать коммерческий код с использованием maybe, то это приведет либо к а) чрезмерно запутанному коду, либо к б) продалбыванию сроков проекта.

Ну, банальный пример.
С сервера нам приходит модель:
setState({
name: 'John Doe'
});

Пишем обработчик формы с Maybe:
<input type="text" defaultValue={this.state.name} onChange={(event) => {
const value = Maybe(event.target.value);
this.setState({name: value}); // WTF? this.state.name будет иметь два типа: String из JSON-а, и Maybe, потому что мы его туда положили.
}} />

Придется доработать форму:
<input type="text" defaultValue={isMaybe(this.state.name) ? this.state.name.value() : this.state.name} onChange={(event) => {
const value = Maybe(event.target.value);
this.setState({name: value});
}} />

Спрашивается, нафига так делать, если и без этого все прекрасно работает?

3 ответов

3 просмотра

Э, работать с мейби намного проще.

Код с maybe вообще не нужно проверять на isMaybe fromNullable(event.target.value) .map(name => this.setState({ name }))

Код, как у тебя - та же хрень, что проверка на null, функториальность и монадность мэйби позволяет работать со значением так, будто оно всегда есть, а все проблемы улетят куда-то в сторону, где мы их потом обработаем, если нужно. Иначе мэйби ничем от нала отличаться не будет

Похожие вопросы

Обсуждают сегодня

Anyone here suffers from unexplained aural migraines, who would be up for talking for a bit? Doesn't *have* to be aural, but I am not asking about headaches, I mean actual mi...
Martin Rys
55
Вопрос по WIN32: Насколько я понимаю то все функции win32 привязаны к объектам операционной системы. Например консоль, файл, кисть, окна итд. Следовательно функции win32 упра...
Tommy Vercetti
6
Hello, can I install macOS and run flutter on a virtual machine? Is it possible to print for iphone?
Mazones
11
кто-то пользуется компонентами rx ? как их лучше ставить, через OPM? (lazarus)
Iluha Companets
15
Дороу! У кого-нибудь есть в загашнике проверенная функция экранирования, аналог re.escape в Python? Из доки: » Escape all the characters in pattern except ASCII letters and n...
Daniil Smolyakov
9
подскажите пожалуйста, как мне освободить результат записанный в переменную result? в чем проблема подскажите если МОЖЕТЕ?
Михаил Helper
28
В смысле более затратная? Общая стоимость владения лошадью меньше, чем автомобиля. В среднем.
Sergej R
10
есть тут кто-то , кто только начал изучать си? если проходите курс на степике или как-то сами изучаете, пишите, может, скооперируемся?..
Eule
25
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
Скажите, тут нет проблемы? IMyInterface1 = interface function GetInterface2: IInterface2; ... function TMyInterface.GetInterface2: IInterface2; begin Result := TI...
Ruslan aka DUDE
18
Карта сайта