Тот же самый TF, но уже на Scala. Как говорится, nuff said.
Gist
Tagless Final example in Scala + Cats
Tagless Final example in Scala + Cats. GitHub Gist: instantly share code, notes, and snippets.
Джон ДеГуз повторяет те же мысли, к которым пришел вчера я:
https://mobile.twitter.com/jdegoes/status/1059056721643991040
https://mobile.twitter.com/jdegoes/status/1059056721643991040
Twitter
John Ⓐ De Goes
Final-tagless lets you build type-safe DSLs with type classes. Instances of the type class are interpreters for the DSL. Free Monad lets you build type-safe DSLs with a data structure. Functions on the data structure (called natural transformations) are interpreters…
Нашел просто охуительную вещь — имитацию
А вот использование:
Я в восхищении. Вот только типы теряются.
do-нотации из хачкеля для JS. Адаптировал для TS (лол). Оказалось, что придется пользоваться б-гомерзким any, так как вывод типов в генераторах пока не работает от слова «никак». Зацените, какая прелесть:const doM = <A>(gen: Lazy<IterableIterator<any>>): A => {
let g = gen();
const step = (value: any) => {
const result = g.next(value);
if (result.done) {
g = gen();
return result.value;
} else {
return result.value.chain(step);
}
};
return step(undefined);
};А вот использование:
const id = doM<number>(function *() {
const begin = yield identity.of(identity.of(41));
const add = yield begin.ap(identity.of((x: number) => x + 1));
return add;
});
expect(id).toEqual(42);Я в восхищении. Вот только типы теряются.
(вложенные
identity.of нужны только для теста, чтобы проверить, что chain таки вызывается нужное кол-во раз)https://habr.com/company/epam_systems/blog/429308/ - интервью со мной опубликовали на Хабре. Странные, смешанные чувства.
Хабр
Как я ушел из стартапа в большую компанию
Строить карьеру – не идти по лестнице, где с каждой новой ступенькой на тебя сваливается более важная должность. Расти – это, скорее, учиться новому, не бояться...
Forwarded from Sergei Fedorov
- расскажите про функциональное программирование
- ну эт кароч когда в фор компрехеншн всё суют (скалист)
- расскажите про функциональную генерацию юидов
- ну эт кароч когда в фор компрехеншн всё суют (скалист)
- расскажите про функциональное логирование
- ну эт кароч когда в фор компрехеншн всё суют (скалист)
- расскажите про таглес файнал
- ну эт кароч когда в фор компрехеншн всё суют (скалист)
- ну эт кароч когда в фор компрехеншн всё суют (скалист)
- расскажите про функциональную генерацию юидов
- ну эт кароч когда в фор компрехеншн всё суют (скалист)
- расскажите про функциональное логирование
- ну эт кароч когда в фор компрехеншн всё суют (скалист)
- расскажите про таглес файнал
- ну эт кароч когда в фор компрехеншн всё суют (скалист)
Посвятил выходные портированию Glue.CircuitBreaker из хаскеля на тайпскрипт.
На выходе получился небольшой пакет, в котором реализован Circuit Breaker в функциональном стиле — с предсказуемо ведущей себя логикой и явной передачей состояния.
Ставьте, пробуйте, присылайте пулл-реквесты.
npm://circuit-breaker-monad
На выходе получился небольшой пакет, в котором реализован Circuit Breaker в функциональном стиле — с предсказуемо ведущей себя логикой и явной передачей состояния.
Ставьте, пробуйте, присылайте пулл-реквесты.
npm://circuit-breaker-monad
npm
npm: envfile
Parse and stringify the environment configuration files and format, also known as .env files and dotenv files
Даже не могу выразить, насколько это важно в современной России:
https://habr.com/company/mosigra/blog/430468/
В который раз восхищаюсь Мосигрой.
https://habr.com/company/mosigra/blog/430468/
В который раз восхищаюсь Мосигрой.
Хабр
Повышаем сознательность граждан
Привет! Мы тут упоролись и сделали карточки с самыми частыми юридическими ситуациями в жизни. Ну, знаете, типа того, что хочется купить по цене с ценника, а не...