When I check this module with dialyzer:
-module(a).
-export([a/0]).
a() ->
F = fun(F, WaitTime) ->
receive after WaitTime -> ok end,
F(F, 3000)
end,
F(F, 1000).
I get:
{a,'-a/0-fun-0-',2}: Trying to use fun with type ((((none(),none()) -> none()),1000 | 3000) -> none()) with arguments (((((none(),none()) -> none()),1000 | 3000) -> none()),3000)!
/martin