1-module(para4). 2 3-compile(export_all). 4 5-export_type([d_atom/0, d_integer/0, d_tuple/0, d_all/0]). 6 7-export_type([t/1]). 8 9-type ai() :: atom() | integer(). 10 11-type d(T) :: dict:dict(T, T). 12 13-opaque d_atom() :: d(atom()). 14-opaque d_integer() :: d(integer()). 15-opaque d_tuple() :: d(tuple()). 16-opaque d_all() :: d(ai()). 17 18b(D) -> 19 a(D) ++ i(D). 20 21-spec a(d_atom()) -> [{atom(), atom()}]. % Invalid type spec 22 23a(D) -> 24 c(D). 25 26-spec i(d_integer()) -> [{integer(), integer()}]. % Invalid type spec 27 28i(D) -> 29 c(D). 30 31-spec t(d_tuple()) -> [{tuple(), tuple()}]. % Invalid type spec. 32 33t(D) -> 34 c(D). 35 36-spec c(d_all()) -> [{ai(), ai()}]. 37 38c(D) -> 39 dict:to_list(D). 40 41 42 43 44-opaque t(A) :: {A, A}. 45 46adt_tt5() -> 47 I1 = adt_y1(), 48 I2 = adt_y3(), 49 I1 =:= I2. 50 51adt_tt6() -> 52 I1 = adt_y2(), 53 I2 = adt_y3(), 54 I1 =:= I2. 55 56adt_tt7() -> 57 I1 = adt_t1(), 58 I2 = adt_t3(), 59 I1 =:= I2. % opaque attempt 60 61adt_tt8() -> 62 I1 = adt_t2(), 63 I2 = adt_t3(), 64 I1 =:= I2. % opaque attempt 65 66adt_tt9() -> 67 I1 = adt_int2(), 68 I2 = adt_int4(), 69 I1 =:= I2. % opaque attempt 70 71adt_tt10() -> 72 I1 = adt_int2(), 73 I2 = adt_int2_4(), 74 I1 =:= I2. % opaque attempt 75 76adt_tt11() -> 77 I1 = adt_int5_7(), 78 I2 = adt_int2_4(), 79 I1 =:= I2. % opaque attempt 80 81adt_tt12() -> 82 I1 = adt_un1_2(), 83 I2 = adt_un3_4(), 84 I1 =:= I2. % opaque attempt 85 86adt_tt13() -> 87 I1 = adt_tup(), 88 I2 = adt_tup2(), 89 I1 =:= I2. % opaque attempt 90 91adt_tt14() -> 92 I1 = adt_map(), 93 I2 = adt_map2(), 94 I1 =:= I2. 95 96y3() -> 97 {a, 3}. 98 99adt_t1() -> 100 para4_adt:t1(). 101 102adt_t2() -> 103 para4_adt:t2(). 104 105adt_t3() -> 106 para4_adt:t3(). 107 108adt_y1() -> 109 para4_adt:y1(). 110 111adt_y2() -> 112 para4_adt:y2(). 113 114adt_y3() -> 115 para4_adt:y3(). 116 117adt_int2() -> 118 para4_adt:int2(). 119 120adt_int4() -> 121 para4_adt:int4(). 122 123adt_int2_4() -> 124 para4_adt:int2_4(). 125 126adt_int5_7() -> 127 para4_adt:int5_7(). 128 129adt_un1_2() -> 130 para4_adt:un1_2(). 131 132adt_un3_4() -> 133 para4_adt:un3_4(). 134 135adt_tup() -> 136 para4_adt:tup(). 137 138adt_tup2() -> 139 para4_adt:tup2(). 140 141adt_map() -> 142 para4_adt:map(). 143 144adt_map2() -> 145 para4_adt:map2(). 146