8 Mar 2026, 15:38 UTC218 views7 reactionsread 9 August 2026 Combiner & Reducer
В v4 добавили новые модули которые являются адаптированными Semigroup & Monoid из fp-ts.
Semigroup (Полугруппа) — это некий тип A и операция combine которая каким-то образом делает из двух экземпляров типа один. Как отражено в названии - комбинирует)
interface Combiner<A> {
combine: (self: A, that: A) => A
}
Самое интересное: подразумевается, что эта штука удовлетворяет неким законам.
// ассо…
👍7
23 Feb 2026, 09:21 UTC235 views2 reactionsread 9 August 2026 Апдейт по модулю Filter github
В итоге Filter прадставляет собой вот такую функцию:
export interface Filter {
(input: Input): Result<Pass, Fail>
}
По-сути это filterMap: остается то что в succeed() плюс можно сразу мапнуть результат
Array.filter(
[1,2,3],
x => isOdd(x)
? succeed(x.toString())
: fail(x)
) // ["1", "3"]
Но дополнительный трюк в том, что были добавлены перегрузки которые одновременно при…
❤1👍1
18 Feb 2026, 15:15 UTC257 views9 reactionsread 9 August 2026 Дождались — бета 4 версии
https://effect.website/blog/releases/effect/40-beta/
https://www.youtube.com/watch?v=P04R7lUR4Cc
🔥6👏2👎1
24 Dec 2025, 11:22 UTC314 views4 reactionsread 9 August 2026 #DI как в Effect Pt3
Теперь озадачился написанием аналога Effect.gen, чтобы можно было просто делать yield* вычислений и получать более читаемый код, вот искомый результат:
const program = gen(function* () {
const randomService = yield* RandomTag;
const randomNumber = random.random();
const logger = yield* LoggerTag;
logger.log(randomNumber);
return randomNumber;
});
Для реализации понадобится 2 вещи:
…
🔥4
22 Dec 2025, 17:31 UTC203 views4 reactionsread 9 August 2026 #DI как в Effect Pt2
Получаем вот что:
const program: Computation<void, { logger: Logger, random: Random }> = andThan(getRandom)(logNumber)
const runnable = provideServices(program)({ logger: ConsoleLogger, random: MathRandom })
run(runnable) // OK
Можно заметить что мы заранее декларировали сервисы функкий в типах. Можно сделать более интересно — как yield* MyServiceTag в Effect. Чтобы мы его просто читали и он …
👍4
22 Dec 2025, 17:31 UTC163 views3 reactionsread 9 August 2026 #DI как в Effect Pt1
Мааам можно мне: "Effect-like-DI"
Нет! У нас "Effect-like-DI" есть дома
Дома: Reader
После прочтения заметки вы будете понимать шутку.
Часто вижу, что хвалят DI в Effect.
Хочу поделиться дедовским рецептиком наколенной версии.
Во первых каждое вычисление должно трекать необходимую зависимость на уровне типов — в Effect это третий типопараметр R.
interface Computation<out Value, in Services ex…
👍3
15 Jul 2025, 09:56 UTC384 views4 reactionsread 9 August 2026 ## Effect 4.0
Вмерджили моe предложение об улучшении DX при работе с Redacted.
Теперь можно задать label при конструировании и при сериализации будет выведен он.
const redacted = Redacted.make('password')
const redactedWithLabel = Redacted.make('password', { label: 'MY_PASS' })
console.log(redacted) // <redacted>
console.log(redactedWithLabel) // <MY_PASS>
Пропихнуть в Config не получилось, а хотелось бы чтобы la…
🔥4
11 Jul 2025, 20:47 UTC378 views3 reactionsread 9 August 2026 ## Effect 4.0
Добавили модуль Filter — похож на Predicate. Но Predicate больше про нативную обертку предикатов и тайпгардов.
interface Filter<in Input, out Output = Input> {
(input: Input): Output | absent
}
const absent: unique symbol = Symbol.for("effect/Filter/absent")
Более удобный, как по мне, потомучто является по факту filterMap — вместо Option.none() теперь Filter.absent и не нужен Option.some
declare fu…
👍2❤1
30 Jun 2025, 20:11 UTC385 views2 reactionsread 9 August 2026 Photo
Expandable hover
Хорошая фича, интересно как оно будет отбражать интерфейсы и юнионы?
https://x.com/drosenwasser/status/1939775110858383418?t=1rW9WKEh3GdniAtQ7_EGKQ&s=19
❤2
5 Jun 2025, 12:49 UTCviews —6 reactionsread 9 August 2026 Posted without readable text
🤔4❤2
5 Jun 2025, 11:58 UTC429 views3 reactionsread 9 August 2026 ## Заинтересовался вот этой оптимизацией в Schema:
If you want more perf you can use ParseResult.flatMap instead of Effect.gen and get eager optimization skipping the Effect runtime.
Michael Arnaldi
Суть в том что трансформеры Schema.transformOrFail должны возвращать Effect<unknown, ParseResult.ParseIssue, unknown>. Но например Either — это его подтип, который не требует вовлечения рантайма.
Идея оптимизации тако…
🔥3
31 May 2025, 16:01 UTC347 views6 reactionsread 9 August 2026 ExecutionPlan — появился в свежем релизе Effect@3.16
Интересно было посмотреть что за штучка. Кристализовался модуль в процессе разработки @effect/ai
Суть в том, что можно описать в плоском виде (просто массив) порядок сервисов, которые будет использовать эффект при неудаче.
То есть семантика буквально:
- попробовать сначала с этим сервисом:
- если успех, то идем дальше
- если нет - то другой сервис
- и тд…
👍3🥱3
Showing the 12 most recent of 20 posts we hold for @khraks_dev. View and reaction counts are the latest single reading for each post, not a live figure, and a recent post is still accumulating both. A view count marked ≈ was rounded by Telegram before we ever saw it — t.me prints views in full below 1,000 and to three significant figures above, so ≈1,200,000 means somewhere between 1,150,000 and 1,249,999. Unmarked counts are exact. Text is reproduced from the public post preview and truncated for length.