Хотя я склонен не использовать их очень часто, в этом случае, я думаю, я бы предпочел версию со списком, поскольку она кажется мне чище.
Если вы любите стиль без точек, он вам тоже может понравиться:
f = zip `ap` map sqrt
ap живет в Control.Monad, и в этом случае его можно рассматривать как комбинатор S, который обобщает применение в исчислении SKI :
ap f g x == f x (g x)
ap const const == id
Как указывает Конал, это также может быть обобщено от Monad к Applicative таким образом (import Control.Applicative):
f = zip <*> map sqrt