upvote
I guess it comes from the `tagsExhaustive` keyword. But I tried to search what it does in the documentation, and it doesn't return any hit. I then searched in the git repository and found it in some examples and CLAUDE.md but it doesn't really seem straightforward.

Perhaps it makes sense for AI agents, but as a human, I will pass.

reply
The whole setup reminded me of the mess people would make with RxJS, and this comment chain seems to indicate it's got the same drawbacks.
reply
Will do my best to make sure that doesn’t happen :)
reply
Yep, it seems that if you hammer messages things get easily dropped or the async behavior is not executed.

IMO the reset should fire regardless what happens after it.

reply
Yeah, I can see how some scenarios might want that behavior, but it sort of defeats the purpose of the demo. It wouldn't hurt to have the reset be cancelable too if you wanted to really showcase how it should work
reply
Agreed - I hit "Reset after 2 seconds", I hit "Add 1", and sure - it adds one, but it also unexpectedly cancels the reset.

Which I don't expect from the description, and I also don't expect from the code.

---

So outside of the simple "This is broken..." feedback, I want to further pick on this example:

Don't fucking hide the imports.

Especially don't fucking hide the imports if you're showing example code, and you're doing things like

```

import { Match as M, Schema as S } from 'effect'

import { m } from 'foldkit/message'

```

Which I only know because I bothered to dig through the example playground counter (which is a different example entirely!)

It's a huge issue to show demo code where concepts magically appear, and it's just bad manners to use shorthand at the same time.

reply
Thanks for the feedback, that’s helpful.
reply
Will take a look at this tonight thanks for the feedback.
reply
The code didn't look that clear to me. Like bad smell city.
reply
It's a framework for correctness, after all :)
reply