M> lists:filter(
M> fun(X) -> filelib:is_dir(X) end,
M> filelib:wildcard(P)).
А зачем тут анонимную функцию объявлять ?
Нельзя разве напрямую передать is_dir ?
К осожалению, насколько понял, синтаксис первый вариант не пропустит (а почему? не умеет, или есть принципиальные возражения?), но второй должен работать.
lists:filter(
filelib:is_dir,
filelib:wildcard(P)).
lists:filter(
{filelib,is_dir},
filelib:wildcard(P)).