# Jolie Interfaces

Cari, con questa mail apro un long term thread di discussione sulle interfacce jolie.E' un tema a cui tengo molto perché è un punto di forza importante che abbiamo e che dobbiamo rafforzare ancora di più per poter vantare un vantaggio competitivo sulle altre tecnologie.\
\
la regola per noi è: **contract first**! Cosa che noi facciamo normalmente ma che invece non è affatto scontata per gli altri.\
\
In generale io propongo di aggiungere delle keyword come segue al linguaggio di interfaccia:\
**native enum** MyEnum: string {   // può anche essere int, long, double, ecc, se dovesse servire      "pippo",      "pluto"\
&#x20;     "paperino"}\
**native regex** MyRegex: string  {      max-lenght: 100,\
&#x20;     min-length: 0\
&#x20;     regex: // una sintassi per le regex}\
\
**native range** MyRange: int {    // può esserci anche double o long     \[0,10], ]12,13], ]15,24\[, \[30,32\[}\
**map** MyMap {                          // questo modella le mappe chiave-valore dove la chiave è sempre una stringa mentre il valore può essere un tipo standard jolie. Min e max esprimono il minimo di chiavi ed il massimo di chiavi attese      keytype: MyRegex,      keytype: MyOrdinaryType,      min: 1,      max: 10,}\
un tipo potrebbe a questo punto diventare\
type MyType: void {   .field1: MyEnum,\
&#x20;  .field2: MyRegex,\
&#x20;  .field3: MyRange,   .field4: MyMap,\
&#x20;  .field4: string,\
&#x20;   ....}\
tra i native aggiungerei oltre a int, long e double, anche **decimal**per poter esprimere i BigDecimal cosa che al momento non riusciamo a trattare.<br>
