I think that's sufficient because the user won't be able to use intermediate transaction result anyway.

If we want to strictly follow Redis behavior, using `HList` with transactional operations separated from single ops (possibly by a code generator or some type-level tricks) could be a solution without any hack.

Another benefit of separate txn ops is that we can prevent use of non-transactional ops at design level.