[erlang-questions] -spec tuple variable size

Siraaj Khandkar siraaj@REDACTED
Thu Nov 29 17:03:07 CET 2012


I don't know all the technicalities of Erlang's type specs, but in general -
variable growth is antithetical to the concept of a tuple.

You'll still need to accumulate the elements in some list before you convert
it to a tuple, so why not just spec that list?


On Nov 28, 2012, at 5:10 PM, Dmitry Kolesnikov <dmkolesnikov@REDACTED> wrote:

> Hello,
> 
> Thanks for response!
> Let me explain better what I am trying to achieve.
> "The shorthand [T,...] stands for the set of non-empty proper lists whose elements are of type T." 
> I am looking for similar definition but for tuples.
> 
> My application serialises tuples into disk. The size of tuple is unbound but tuple elements a fixed to string, binary, number, boolean or undefined. I cannot use " "|" operator to define as many variants as you like" because number of variants is unlimited. Well practically, I do have a hard limit of 4096 elements per tuple but I am lazy to type in 4096 variants :-) 
> 
> - Dmitry
> 
> On Nov 28, 2012, at 11:50 PM, Motiejus Jakštys <desired.mta@REDACTED> wrote:
> 
>> On Wed, Nov 28, 2012 at 9:10 PM, Dmitry Kolesnikov
>> <dmkolesnikov@REDACTED> wrote:
>>> but compiler fails syntax error before: ','
>>> 
>>> -- CLIP --
>>> -type value()     :: string() | binary() | number() | boolean() | undefined.
>>> -type entity()    :: [{atom(), value()}] | {field()}.
>> 
>> These should be fine.
>> 
>>> -type field()      :: value() | value(), field().
>> 
>> Maybe you meant
>> -type field() :: value() | {value(), field()}.
>> 
>> ?
>> 
>> In general, if you want to define tuples of different sizes in -spec,
>> you use the "|" operator to define as many variants as you like.
>> 
>> Likely I don't understand what you are trying to define.

-- 
Siraaj Khandkar
.o.
..o
ooo




More information about the erlang-questions mailing list