Primo
guard someGuard
return ()
является избыточным, guard
уже возвращает ()
, если условие истинно.Тогда я полагаю, что someGuard
на самом деле зависит от x
, иначе это будет if someGuard then length someList else 0
.Обычный способ написать это -
someFunc foo = filter (\x -> someGuard) someList
, если ситуация действительно так проста, как выглядит ваш пример.Для более сложных ситуаций использование одного из ваших примеров стилей является наиболее прямым способом.Я считаю, что делать нотацию предпочтительнее, если все становится действительно сложно.