Excuse me if the question is silly.

Thought this MonadCatchIO will be removed in next version of snap, current version has it and I can't understand this derivation: [0]

L.Lensed seems like just a newtype wrapper around a function [1], and there is no instance of MonadCatchIO for a function.

How is it derived?

[0]: https://github.com/snapframework/snap/blob/0.13.2.8/src/Snap/Snaplet/Internal/Types.hs#L260
[1]: https://github.com/snapframework/snap/blob/0.13.2.8/src/Snap/Snaplet/Internal/Lensed.hs#L20