Are nested fmap calls idiomatic Haskell?
Sometimes you can wrap the "nested functors" in a newtype which is itself a functor, use a single fmap on the newtype, and unwrap. In your case:

import Data.Functor.Compose

let z = getCompose . fmap (:[]) . Compose $ text


We are composing the ((-&gt;) s) and Scraper a functors.

The problem with this is that it trades newtype noise for nested fmap noise.