Size: a a a

PureScript — русскоговорящее сообщество

2018 August 27

к

кана in PureScript — русскоговорящее сообщество
в таком случае в жс тоже зачастую используют мапы
источник

к

кана in PureScript — русскоговорящее сообщество
function getResult(
 a: string,
 b: string,
 m: Map<string, number>
): number {
 const a_ = m.get(a);
 const b_ = m.get(b);

 if (a_ != null && b != null) {
   return a_ + b_;
 } else {
   return 0;
 }
}
источник

ЗП

Зигохистоморфный Препроморфизм in PureScript — русскоговорящее сообщество
кана
function getResult(
 a: string,
 b: string,
 m: Map<string, number>
): number {
 const a_ = m.get(a);
 const b_ = m.get(b);

 if (a_ != null && b != null) {
   return a_ + b_;
 } else {
   return 0;
 }
}
m.has(a)
источник

к

кана in PureScript — русскоговорящее сообщество
m.has(a) === true не дает в контекст пруф, что m.get(a) : number, тем более для мутабельной структуры, все еще будет m.get(a) : ?number
источник

к

кана in PureScript — русскоговорящее сообщество
поэтому без проверки или ансейф-каста не обойтись все равно
источник

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
Vasiliy Yorkin
я всё не читал но есть Record.get set etc
О это интересно
источник

ЗП

Зигохистоморфный Препроморфизм in PureScript — русскоговорящее сообщество
вот только прокси лейбл динамическим не сделать вроде
источник

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
кана
function getResult(
 a: string,
 b: string,
 m: Map<string, number>
): number {
 const a_ = m.get(a);
 const b_ = m.get(b);

 if (a_ != null && b != null) {
   return a_ + b_;
 } else {
   return 0;
 }
}
Сейф-код примерно такой, да
источник

к

кана in PureScript — русскоговорящее сообщество
Anton Kotenko
О это интересно
не, это как раз если известно в компайл-тайме
источник

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
Ну на самом деле я переживу и так, но вдруг есть альтернатива а я и не знаю
источник

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
кана
не, это как раз если известно в компайл-тайме
В компайл-тайме думаю известно, API на пурсе
источник

к

кана in PureScript — русскоговорящее сообщество
если сделать неизвстные в компайл-тайме и возвращать Maybe, получится Map
источник

ЗП

Зигохистоморфный Препроморфизм in PureScript — русскоговорящее сообщество
а обязательно, чтобы a и b были оба?
источник

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
Зигохистоморфный Препроморфизм
а обязательно, чтобы a и b были оба?
сейчас подумал лучше и понял что "лейблы" в рантайме тоже могут меняться, так что наверное Map это единственный вариант. "Лейблов" может быть какое угодно количество и они могут добавляться/удаляться (есть доступ к текущему состояний). Тип данных — известен в compile-time (в примере — Int). Может быть можно как-то на линзах "укоротить" такой код?
источник

ЗП

Зигохистоморфный Препроморфизм in PureScript — русскоговорящее сообщество
Anton Kotenko
сейчас подумал лучше и понял что "лейблы" в рантайме тоже могут меняться, так что наверное Map это единственный вариант. "Лейблов" может быть какое угодно количество и они могут добавляться/удаляться (есть доступ к текущему состояний). Тип данных — известен в compile-time (в примере — Int). Может быть можно как-то на линзах "укоротить" такой код?
тогда почему не просто свертка? но она будет рабоать даже если только один элемент будет найден (я не знаю подойдет тебе или нет)
источник

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
подойдёт, можно пример?
источник

ЗП

Зигохистоморфный Препроморфизм in PureScript — русскоговорящее сообщество
Anton Kotenko
подойдёт, можно пример?
ну вот если тебе сложение надо
FoldableI.foldMapWithIndex (\i a -> guard (i `Foldable.elem` ["a", "b"]) (Additive a))
источник

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
Зигохистоморфный Препроморфизм
ну вот если тебе сложение надо
FoldableI.foldMapWithIndex (\i a -> guard (i `Foldable.elem` ["a", "b"]) (Additive a))
нужно ещё "запихнуть" результат в "c"
источник

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
но интересно вообще, с такой стороны не думал
источник

к

кана in PureScript — русскоговорящее сообщество
Anton Kotenko
сейчас подумал лучше и понял что "лейблы" в рантайме тоже могут меняться, так что наверное Map это единственный вариант. "Лейблов" может быть какое угодно количество и они могут добавляться/удаляться (есть доступ к текущему состояний). Тип данных — известен в compile-time (в примере — Int). Может быть можно как-то на линзах "укоротить" такой код?
liftA2 (+) (m^.at a) (m^.at b)
источник