Иногда я пишу такой код:
someFunc :: Foo -> Int
someFunc foo = length $ do
x <- someList
guard someGuard
return ()
Или, что то же самое:
someFunc foo = length [() | x <- someList, someGuard]
Есть ли лучший способ выполнить такого рода вычисления? Более эффективным? Более читабельный? Более идиоматический?