[erlang-questions] Intel Quad CPUs

Richard Carlsson richardc@REDACTED
Tue Sep 4 17:44:32 CEST 2007


Christian S wrote:
> 2007/9/4, Hugh Perkins <hughperkins@REDACTED>:
>> f :: ( StudentNames );
>> f(StudentNames@[]) -> [];
>> f(StudentNames@[H|T]) when H < 3 -> {low};
>> f(StudentNames@[A, B, C|Rest]) when C =:= {foo} -> [A|T];
>> f(_StudentNames) -> 42.
> 
> We already have edoc for machine-extractable documentation, that would
> allow us to have something similar to lisp's documentation strings.

In case you haven't noticed, edoc does a pretty good job of looking
at your clauses and extracting parameter names automatically, even
if you have not written any @spec-declarations, or if you only put
types in the @spec, as in "@spec (integer(), float()) -> atom()".
In the following examples, edoc should select the parameter name Foo:

     f1(Foo) -> ...

     f2(42) -> ...;
     f2(Foo) -> ...

     f3([]) -> ...;
     f3(_Foo) -> ...   % (or _foo)

     f4(#foo{...}) -> ...

     f5([Head | Foo]) -> ...

(Before you ask - no, it won't choose the same name for two different
parameters of the same function by accident. If it can't find a unique
name from the hints in the patterns, it will generate a name like "X1".)

I agree that it would be handy if the shell could report this, but that
would require actually running edoc on all your code and building a dets
table or similar, combined with an API for accessing the info. So there
is definitely work for idle hands to do. Actually, I think that some
parts of that might already be implemented in Distel.

     /Richard




More information about the erlang-questions mailing list