[erlang-patches] [PATCH] Fix lists:foreach/2's documented spec
Kostis Sagonas
kostis@REDACTED
Mon Oct 11 15:04:18 CEST 2010
Björn Gustavsson wrote:
> On Sun, Oct 10, 2010 at 7:02 PM, Tuncer Ayaz <tuncer.ayaz@REDACTED> wrote:
>> ---
>> lib/stdlib/doc/src/lists.xml | 4 ++--
>> 1 files changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/lib/stdlib/doc/src/lists.xml b/lib/stdlib/doc/src/lists.xml
>> index 92c4eb4..0cf88fe 100644
>> --- a/lib/stdlib/doc/src/lists.xml
>> +++ b/lib/stdlib/doc/src/lists.xml
>> @@ -297,10 +297,10 @@ flatmap(Fun, List1) ->
>> </desc>
>> </func>
>> <func>
>> - <name>foreach(Fun, List) -> void()</name>
>> + <name>foreach(Fun, List) -> ok</name>
>> <fsummary>Apply a function to each element of a list</fsummary>
>> <type>
>> - <v>Fun = fun(Elem) -> void()</v>
>> + <v>Fun = fun(Elem) -> term()</v>
>> <v> Elem = term()</v>
>> <v>List = [term()]</v>
>> </type>
>>
>
> void() is a convention used in the documentation to mean
> that the function has no useful return value and should be
> ignored. It is used in many places in the documentation.
> Try:
>
> git grep 'void()' | grep '[.]xml'
Convention or not, the fact remains that a void() type does not exist in
Erlang. The problem is that even if one is careful enough not to match
against the result of the lists:foreach/2 call, the return from this
function can propagate higher up in the function call chain.
foo1() ->
...
gazonk = foo2(...), % this one will fail here
....
foo2(...) ->
...
foo3(...).
...
fooN_1(...) ->
...
fooN(...).
fooN() ->
...
lists:foreach(...).
It would be a much better world if all void() functions were made to
return some consistent value such as 'ok'.
Kostis
More information about the erlang-patches
mailing list