1+ object Main {
2+ trait A {}
3+ trait B {}
4+ trait C {}
5+ trait D {}
6+ trait E {}
7+ trait F {}
8+ trait G {}
9+ trait H {}
10+ trait I {}
11+ trait J {}
12+ trait K {}
13+ trait L {}
14+ trait M {}
15+ trait N {}
16+ trait O {}
17+ trait P {}
18+ trait Q {}
19+ trait R {}
20+ trait S {}
21+ trait T {}
22+ trait U {}
23+ trait V {}
24+ trait W {}
25+ trait X {}
26+ trait Y {}
27+ trait Z {}
28+
29+ type AlphabeticServices = A & B & C & D & E & F & G & H & I & J & K & L & M & N & O & P & Q & R & S & T & U & V & W & X & Y & Z
30+
31+ type EnvOutA = B & C & D & E & F & G & H & I & J & K & L & M & N & O & P & Q & R & S & T & U & V & W & X & Y & Z
32+ type EnvOutB = A & C & D & E & F & G & H & I & J & K & L & M & N & O & P & Q & R & S & T & U & V & W & X & Y & Z
33+ type EnvOutC = A & B & D & E & F & G & H & I & J & K & L & M & N & O & P & Q & R & S & T & U & V & W & X & Y & Z
34+ type EnvOutD = A & B & C & E & F & G & H & I & J & K & L & M & N & O & P & Q & R & S & T & U & V & W & X & Y & Z
35+ type EnvOutE = A & B & C & D & F & G & H & I & J & K & L & M & N & O & P & Q & R & S & T & U & V & W & X & Y & Z
36+ type EnvOutF = A & B & C & D & E & G & H & I & J & K & L & M & N & O & P & Q & R & S & T & U & V & W & X & Y & Z
37+ type EnvOutG = A & B & C & D & E & F & H & I & J & K & L & M & N & O & P & Q & R & S & T & U & V & W & X & Y & Z
38+ type EnvOutH = A & B & C & D & E & F & G & I & J & K & L & M & N & O & P & Q & R & S & T & U & V & W & X & Y & Z
39+ type EnvOutI = A & B & C & D & E & F & G & H & J & K & L & M & N & O & P & Q & R & S & T & U & V & W & X & Y & Z
40+ type EnvOutJ = A & B & C & D & E & F & G & H & I & K & L & M & N & O & P & Q & R & S & T & U & V & W & X & Y & Z
41+ type EnvOutK = A & B & C & D & E & F & G & H & I & J & L & M & N & O & P & Q & R & S & T & U & V & W & X & Y & Z
42+ type EnvOutL = A & B & C & D & E & F & G & H & I & J & K & M & N & O & P & Q & R & S & T & U & V & W & X & Y & Z
43+ type EnvOutM = A & B & C & D & E & F & G & H & I & J & K & L & N & O & P & Q & R & S & T & U & V & W & X & Y & Z
44+ type EnvOutN = A & B & C & D & E & F & G & H & I & J & K & L & M & O & P & Q & R & S & T & U & V & W & X & Y & Z
45+ type EnvOutO = A & B & C & D & E & F & G & H & I & J & K & L & M & N & P & Q & R & S & T & U & V & W & X & Y & Z
46+ type EnvOutP = A & B & C & D & E & F & G & H & I & J & K & L & M & N & O & Q & R & S & T & U & V & W & X & Y & Z
47+ type EnvOutQ = A & B & C & D & E & F & G & H & I & J & K & L & M & N & O & P & R & S & T & U & V & W & X & Y & Z
48+ type EnvOutR = A & B & C & D & E & F & G & H & I & J & K & L & M & N & O & P & Q & S & T & U & V & W & X & Y & Z
49+ type EnvOutS = A & B & C & D & E & F & G & H & I & J & K & L & M & N & O & P & Q & R & T & U & V & W & X & Y & Z
50+ type EnvOutT = A & B & C & D & E & F & G & H & I & J & K & L & M & N & O & P & Q & R & S & U & V & W & X & Y & Z
51+ type EnvOutU = A & B & C & D & E & F & G & H & I & J & K & L & M & N & O & P & Q & R & S & T & V & W & X & Y & Z
52+ type EnvOutV = A & B & C & D & E & F & G & H & I & J & K & L & M & N & O & P & Q & R & S & T & U & W & X & Y & Z
53+ type EnvOutW = A & B & C & D & E & F & G & H & I & J & K & L & M & N & O & P & Q & R & S & T & U & V & X & Y & Z
54+ type EnvOutX = A & B & C & D & E & F & G & H & I & J & K & L & M & N & O & P & Q & R & S & T & U & V & W & Y & Z
55+ type EnvOutY = A & B & C & D & E & F & G & H & I & J & K & L & M & N & O & P & Q & R & S & T & U & V & W & X & Z
56+ type EnvOutZ = A & B & C & D & E & F & G & H & I & J & K & L & M & N & O & P & Q & R & S & T & U & V & W & X & Y
57+
58+ trait Reader [- E , A ] {
59+ def map [B ](f : A => B ): Reader [E , B ] = ???
60+ def flatMap [E2 <: E , B ](f : A => Reader [E2 , B ]): Reader [E2 , B ] = ???
61+ }
62+
63+ def e1 : Reader [EnvOutA , Unit ] = ???
64+ def e2 : Reader [EnvOutB , Unit ] = ???
65+ def e3 : Reader [EnvOutC , Unit ] = ???
66+ def e4 : Reader [EnvOutD , Unit ] = ???
67+ def e5 : Reader [EnvOutE , Unit ] = ???
68+ def e6 : Reader [EnvOutF , Unit ] = ???
69+ def e7 : Reader [EnvOutG , Unit ] = ???
70+ def e8 : Reader [EnvOutH , Unit ] = ???
71+ def e9 : Reader [EnvOutI , Unit ] = ???
72+ def e10 : Reader [EnvOutJ , Unit ] = ???
73+ def e11 : Reader [EnvOutK , Unit ] = ???
74+ def e12 : Reader [EnvOutL , Unit ] = ???
75+ def e13 : Reader [EnvOutM , Unit ] = ???
76+ def e14 : Reader [EnvOutN , Unit ] = ???
77+ def e15 : Reader [EnvOutO , Unit ] = ???
78+ def e16 : Reader [EnvOutP , Unit ] = ???
79+ def e17 : Reader [EnvOutQ , Unit ] = ???
80+ def e18 : Reader [EnvOutR , Unit ] = ???
81+ def e19 : Reader [EnvOutS , Unit ] = ???
82+ def e20 : Reader [EnvOutT , Unit ] = ???
83+ def e21 : Reader [EnvOutU , Unit ] = ???
84+ def e22 : Reader [EnvOutV , Unit ] = ???
85+ def e23 : Reader [EnvOutW , Unit ] = ???
86+ def e24 : Reader [EnvOutX , Unit ] = ???
87+ def e25 : Reader [EnvOutY , Unit ] = ???
88+ def e26 : Reader [EnvOutZ , Unit ] = ???
89+
90+ def program : Reader [AlphabeticServices , Unit ] = for {
91+ // 1
92+ _ <- e1
93+ _ <- e2
94+ _ <- e3
95+ _ <- e4
96+ _ <- e5
97+ _ <- e6
98+ _ <- e7
99+ _ <- e8
100+ _ <- e8
101+ _ <- e9
102+ _ <- e10
103+ _ <- e11
104+ _ <- e12
105+ _ <- e13
106+ _ <- e14
107+ _ <- e15
108+ _ <- e16
109+ _ <- e17
110+ _ <- e18
111+ _ <- e19
112+ _ <- e20
113+ _ <- e21
114+ _ <- e22
115+ _ <- e23
116+ _ <- e24
117+ _ <- e25
118+ _ <- e26
119+ // 2
120+ _ <- e1
121+ _ <- e2
122+ _ <- e3
123+ _ <- e4
124+ _ <- e5
125+ _ <- e6
126+ _ <- e7
127+ _ <- e8
128+ _ <- e8
129+ _ <- e9
130+ _ <- e10
131+ _ <- e11
132+ _ <- e12
133+ _ <- e13
134+ _ <- e14
135+ _ <- e15
136+ _ <- e16
137+ _ <- e17
138+ _ <- e18
139+ _ <- e19
140+ _ <- e20
141+ _ <- e21
142+ _ <- e22
143+ _ <- e23
144+ _ <- e24
145+ _ <- e25
146+ _ <- e26
147+ // TODO: optimize the subtype checking for large intersection types further
148+ // 3
149+ // _ <- e1
150+ // _ <- e2
151+ // _ <- e3
152+ // _ <- e4
153+ // _ <- e5
154+ // _ <- e6
155+ // _ <- e7
156+ // _ <- e8
157+ // _ <- e8
158+ // _ <- e9
159+ // _ <- e10
160+ // _ <- e11
161+ // _ <- e12
162+ // _ <- e13
163+ // _ <- e14
164+ // _ <- e15
165+ // _ <- e16
166+ // _ <- e17
167+ // _ <- e18
168+ // _ <- e19
169+ // _ <- e20
170+ // _ <- e21
171+ // _ <- e22
172+ // _ <- e23
173+ // _ <- e24
174+ // _ <- e25
175+ // _ <- e26
176+ // 4
177+ // _ <- e1
178+ // _ <- e2
179+ // _ <- e3
180+ // _ <- e4
181+ // _ <- e5
182+ // _ <- e6
183+ // _ <- e7
184+ // _ <- e8
185+ // _ <- e8
186+ // _ <- e9
187+ // _ <- e10
188+ // _ <- e11
189+ // _ <- e12
190+ // _ <- e13
191+ // _ <- e14
192+ // _ <- e15
193+ // _ <- e16
194+ // _ <- e17
195+ // _ <- e18
196+ // _ <- e19
197+ // _ <- e20
198+ // _ <- e21
199+ // _ <- e22
200+ // _ <- e23
201+ // _ <- e24
202+ // _ <- e25
203+ // _ <- e26
204+ } yield ()
205+ }
0 commit comments