[erlang-questions] type specification

Kostis Sagonas <>
Fri Jul 2 18:41:31 CEST 2010

Serge Aleynikov wrote:
> Can user-defined type specification be imported from or referenced to 
> another module?
> E.g. if I have a function that returns date/time value in the same 
> format as calendar:now_to_local_time/1 whose type t_datetime1970() is 
> defined in the calendar module, what would the -spec of my function be:
> -spec local_time() -> ???
> local_time() ->
>     calendar:now_to_local_time(now()).

If the type is exported (cf. the new -export_type attribute) then what 
you want to write is as simple as:

   -spec local_time() -> calendar:t_datetime1970().

In this particular case, the t_datetime1970() is not exported, so you 
either need to clone it in your module or send a request to the module's 
maintainer to export this type.


PS. Btw, I've just checked the 'calendar' manual page and the only types
     that it mentions there are date() and time(), which are also not
     exported by the module (and actually have slightly different names
     t_date() and t_time()).  IMO, they should be renamed and exported.
     It's not so clear to me whether datetime1970() should also be in the
     same category.

More information about the erlang-questions mailing list