間違ったモナドトランスフォーマーです。 可換(commutative)なモナド以外と組み合わせた場合は、モナド則を満たしません。 可換なモナド以外と組み合わせたい場合は、StreamTを使用してください。
StreamT