1# mode: run 2# tag: closures, lambda 3 4# Battery of tests for closures in Cython. Based on the collection of 5# compiler tests from P423/B629 at Indiana University, Spring 1999 and 6# Fall 2000. Special thanks to R. Kent Dybvig, Dan Friedman, Kevin 7# Millikin, and everyone else who helped to generate the original 8# tests. Converted into a collection of Python/Cython tests by Craig 9# Citro. 10# 11# Note: This set of tests is split (somewhat randomly) into several 12# files, simply because putting all the tests in a single file causes 13# gcc and g++ to buckle under the load. 14# 15 16 17def g0(): 18 """ 19 >>> g0() 20 4000 21 """ 22 return (lambda y_1: y_1)(4000) 23 24 25def g1(): 26 """ 27 >>> g1() 28 1 29 """ 30 f_3 = (lambda x_2: x_2) 31 return (f_3(0)+1) 32 33 34def g2(): 35 """ 36 >>> g2() 37 4 38 """ 39 f_5 = (lambda y_4: y_4) 40 return f_5(f_5(4)) 41 42 43def g3(): 44 """ 45 >>> g3() 46 4 47 """ 48 return (lambda f_7: f_7(f_7(4)))((lambda y_6: y_6)) 49 50 51def g5(): 52 """ 53 >>> g5() 54 9000 55 """ 56 def g4(): 57 a_8 = 4000 58 return lambda b_9: ((a_8)+(b_9)) 59 return g4()(5000) 60 61 62def g6(): 63 """ 64 >>> g6() 65 9000 66 """ 67 return (lambda a_10: (lambda b_11: (a_10)+(b_11)))(4000)(5000) 68 69 70def g7(): 71 """ 72 >>> g7() 73 2 74 """ 75 return (lambda f_13: f_13(f_13(0)))((lambda x_12: (x_12+1))) 76 77 78def g8(): 79 """ 80 >>> g8() 81 0 82 """ 83 f_16 = (lambda x_15, y_14: x_15) 84 a_17 = f_16(0, 1) 85 return f_16(a_17, a_17) 86 87 88def g10(): 89 """ 90 >>> g10() 91 3 92 """ 93 f_19 = (lambda x_18: x_18) 94 def g9(): 95 a_22 = 0 96 b_21 = 1 97 c_20 = 2 98 return (f_19(a_22))+((f_19(b_21))+(f_19(c_20))) 99 return (f_19(0))+(g9()) 100 101 102def g12(): 103 """ 104 >>> g12() 105 2 106 """ 107 def g11(): 108 x_23 = 1 109 return lambda y_24: ((x_23)+(y_24)) 110 f_25 = g11() 111 x_26 = 0 112 return f_25(f_25(x_26)) 113 114 115def g14(): 116 """ 117 >>> g14() 118 3050 119 """ 120 def g13(): 121 t_29 = (lambda x_28: (x_28)+(50)) 122 return lambda f_30: (t_29(f_30(1000))) 123 return g13()((lambda y_27: (y_27)+(2000))) 124 125 126def g15(): 127 """ 128 >>> g15() 129 3050 130 """ 131 return (lambda t_33: (lambda f_34: t_33(f_34(1000))))((lambda x_32: (x_32)+(50)))((lambda y_31: (y_31)+(2000))) 132 133 134def g17(): 135 """ 136 >>> g17() 137 2050 138 """ 139 def g16(): 140 t_35 = 50 141 return lambda f_36: ((t_35)+(f_36())) 142 return g16()((lambda : 2000)) 143 144 145def g18(): 146 """ 147 >>> g18() 148 2050 149 """ 150 return (lambda t_37: (lambda f_38: (t_37)+(f_38())))(50)((lambda : 2000)) 151 152 153def g20(): 154 """ 155 >>> g20() 156 700 157 """ 158 def g19(): 159 x_39 = 300 160 return lambda y_40: ((x_39)+(y_40)) 161 return g19()(400) 162 163 164def g21(): 165 """ 166 >>> g21() 167 0 168 """ 169 x_44 = 3 170 f_43 = (lambda x_42, y_41: x_42) 171 if (f_43(0, 0)): 172 return f_43(f_43(0, 0), x_44) 173 else: 174 return 0 175 176 177def g22(): 178 """ 179 >>> g22() 180 False 181 """ 182 f_46 = (lambda x_45: (x_45) if (((not ((x_45[0]) == 0))) if (isinstance(x_45, list)) else (False)) else (False)) 183 return f_46([0,[0,[]]]) 184 185 186def g23(): 187 """ 188 >>> g23() 189 False 190 """ 191 f_48 = (lambda x_47: (x_47) if (((not ((not ((x_47[0]) == 0))) if (isinstance(x_47, list)) else (False))) if (x_47) else (False)) else (False)) 192 return f_48(0) 193 194 195def g24(): 196 """ 197 >>> g24() 198 [] 199 """ 200 f_50 = (lambda x_49: (x_49) if ((True) if (isinstance(x_49, list)) else ((x_49 == []))) else ([])) 201 return f_50(0) 202 203 204def g25(): 205 """ 206 >>> g25() 207 0 208 """ 209 y_51 = 4 210 f_54 = (lambda x_53, y_52: 0) 211 return f_54(f_54(y_51, y_51), f_54(y_51, y_51)) 212 213 214def g26(): 215 """ 216 >>> g26() 217 0 218 """ 219 y_55 = 4 220 f_58 = (lambda x_57, y_56: 0) 221 return f_58(f_58(y_55, f_58(y_55, y_55)), f_58(y_55, f_58(y_55, y_55))) 222 223 224def g27(): 225 """ 226 >>> g27() 227 4 228 """ 229 return (lambda y_59: (lambda f_61: f_61(f_61(y_59)))((lambda y_60: y_60)))(4) 230 231 232def g28(): 233 """ 234 >>> g28() 235 23 236 """ 237 f_63 = (lambda x_62: x_62) 238 return ((1) if (False) else (f_63(22))+1) 239 240 241def g29(): 242 """ 243 >>> g29() 244 5061 245 """ 246 f_68 = (lambda x_65: ((not x_65)) if (x_65) else (x_65)) 247 f2_67 = (lambda x_64: (10)*(x_64)) 248 x_66 = 23 249 return ((1) if (f_68(x_66 == 0)) else ((x_66)*(f2_67((x_66-1))))+1) 250 251 252def g30(): 253 """ 254 >>> g30() 255 1 256 """ 257 one_69 = (lambda n_70: (1) if (n_70 == 0) else (one_69((n_70-1)))) 258 return one_69(13) 259 260 261def g31(): 262 """ 263 >>> g31() 264 True 265 """ 266 even_72 = (lambda x_74: (True) if (x_74 == 0) else (odd_71((x_74-1)))) 267 odd_71 = (lambda x_73: (False) if (x_73 == 0) else (even_72((x_73-1)))) 268 return odd_71(13) 269 270 271def g32(): 272 """ 273 >>> g32() 274 False 275 """ 276 even_76 = (lambda x_78: (True) if (x_78 == 0) else (odd_75((x_78-1)))) 277 odd_75 = (lambda x_77: (False) if (x_77 == 0) else (even_76((x_77-1)))) 278 return even_76(13) 279 280 281def g34(): 282 """ 283 >>> g34() 284 True 285 """ 286 even_80 = (lambda x_79: x_79) 287 def g33(): 288 even_82 = (lambda x_84: (True) if (x_84 == 0) else (odd_81((x_84-1)))) 289 odd_81 = (lambda x_83: (False) if (x_83 == 0) else (even_82((x_83-1)))) 290 return odd_81(13) 291 return even_80(g33()) 292 293 294def g35(): 295 """ 296 >>> g35() 297 120 298 """ 299 fact_85 = (lambda n_86: (1) if (n_86 == 0) else ((n_86)*(fact_85((n_86-1))))) 300 return fact_85(5) 301 302 303def g38(): 304 """ 305 >>> g38() 306 10 307 """ 308 x_87 = 5 309 a_90 = (lambda u_101, v_100, w_99: (b_89(v_100, w_99)) if (u_101 == 0) else (a_90((u_101)-(1), v_100, w_99))) 310 def g37(): 311 def g36(q_93, r_92): 312 p_94 = (q_93)*(r_92) 313 e_96 = (lambda n_98: (c_88(p_94)) if (n_98 == 0) else (o_95((n_98)-(1)))) 314 o_95 = (lambda n_97: (c_88(x_87)) if (n_97 == 0) else (e_96((n_97)-(1)))) 315 return e_96((q_93)*(r_92)) 316 return g36 317 b_89 = g37() 318 c_88 = (lambda x_91: (5)*(x_91)) 319 return a_90(3, 2, 1) 320 321 322def g39(): 323 """ 324 >>> g39() 325 120 326 """ 327 fact_104 = (lambda fact_103, n_102: (1) if (n_102 == 0) else ((fact_103(fact_103, (n_102-1)))*(n_102))) 328 return fact_104(fact_104, 5) 329 330 331def g40(): 332 """ 333 >>> g40() 334 35 335 """ 336 return (lambda x_105: (lambda y_106: (lambda z_107: (lambda w_108: (lambda u_109: (x_105)+((y_106)+((z_107)+((w_108)+(u_109)))))))))(5)(6)(7)(8)(9) 337 338 339def g41(): 340 """ 341 >>> g41() 342 6 343 """ 344 sum_112 = (lambda sum_111, ls_110: (0) if ((ls_110 == [])) else (((ls_110[0]))+(sum_111(sum_111, (ls_110[1]))))) 345 return sum_112(sum_112, [1,[2,[3,[]]]]) 346 347 348def g46(): 349 """ 350 >>> g46() 351 1500 352 """ 353 def g45(): 354 def g44(): 355 def g42(a_113): 356 def g43(): 357 (a_113)+(200 if True else None) 358 return 1500 359 return g43 360 return g42 361 return g44()(1000) 362 return g45()() 363 364 365def g53(): 366 """ 367 >>> g53() 368 2600 369 """ 370 def g52(): 371 def g51(): 372 def g50(): 373 def g47(a_114): 374 def g48(b_115): 375 a_114 = 200 if b_115 else None 376 def g49(c_116): 377 c_116 = 400 if 300 else None 378 return (a_114)+((b_115)+(c_116)) 379 return g49 380 return g48 381 return g47 382 return g50()(1000) 383 return g51()(2000) 384 return g52()(3000) 385 386 387def g54(): 388 """ 389 >>> g54() 390 5 391 """ 392 return (lambda f_118: f_118(f_118(5)))((lambda x_117: x_117)) 393 394 395def g56(): 396 """ 397 >>> g56() 398 8000 399 """ 400 def g55(): 401 f_120 = (lambda x_119: (x_119)+(3000)) 402 return lambda y_121: (f_120(f_120(y_121))) 403 return g55()(2000) 404 405 406def g57(): 407 """ 408 >>> g57() 409 120 410 """ 411 fact_125 = (lambda fact_124, n_123, acc_122: (acc_122) if (n_123 == 0) else (fact_124(fact_124, (n_123-1), (n_123)*(acc_122)))) 412 return fact_125(fact_125, 5, 1) 413 414 415def g58(): 416 """ 417 >>> g58() 418 3 419 """ 420 f_127 = (lambda x_126: (lambda : x_126())) 421 return f_127((lambda : 3))() 422 423 424def g59(): 425 """ 426 >>> g59() 427 22 428 """ 429 f_129 = (lambda x_132: (x_132)+((lambda y_133: (lambda z_134: (y_133)+(z_134)))(6)(7))) 430 g_128 = (5)+((lambda w_131, u_130: (w_131)+(u_130))(8, 9)) 431 return g_128 432 433 434def g60(): 435 """ 436 >>> g60() 437 0 438 """ 439 loop_135 = (lambda : (lambda : loop_135())) 440 loop_135() 441 return 0 442 443 444def g63(): 445 """ 446 >>> g63() 447 668 448 """ 449 def g62(): 450 def g61(): 451 loop_137 = (lambda link_138: (lambda : link_138())) 452 return loop_137((lambda : 668)) 453 return g61 454 f_136 = g62() 455 return f_136()() 456 457 458def g64(): 459 """ 460 >>> g64() 461 17 462 """ 463 k_141 = (lambda x_140, y_139: x_140) 464 b_142 = 17 465 return k_141(k_141(k_141, 37), 37)(b_142, (b_142)*(b_142)) 466 467 468def g65(): 469 """ 470 >>> g65() 471 37 472 """ 473 f_145 = (lambda g_144, u_143: g_144((g_144(37)) if (u_143) else (u_143))) 474 return f_145((lambda x_146: x_146), 75) 475 476 477def g66(): 478 """ 479 >>> g66() 480 4687 481 """ 482 f_150 = (lambda h_148, u_147: h_148((h_148((u_147)+(37))) if (u_147) else (u_147))) 483 w_149 = 62 484 return f_150((lambda x_151: (w_149)-(x_151)), (75)*(w_149)) 485 486 487def g67(): 488 """ 489 >>> g67() 490 True 491 """ 492 t_153 = True 493 f_152 = False 494 bools_156 = [t_153,f_152] 495 id_155 = (lambda x_154: (f_152) if ((not x_154)) else (t_153)) 496 even_158 = (lambda x_160: ((bools_156[0])) if (id_155(x_160 == 0)) else (odd_157((x_160)-(1)))) 497 odd_157 = (lambda y_159: (id_155((bools_156[1]))) if (y_159 == 0) else (even_158((y_159)-(1)))) 498 return odd_157(5) 499 500 501def g68(): 502 """ 503 >>> g68() 504 5 505 """ 506 f_162 = (lambda x_164: (x_164)+(1)) 507 g_161 = (lambda y_163: f_162(f_162(y_163))) 508 return (f_162(1))+(g_161(1)) 509 510 511def g69(): 512 """ 513 >>> g69() 514 1521 515 """ 516 y_165 = 3 517 f_168 = (lambda x_171: (g_167((x_171)+(1))) if (x_171 == 0) else (f_168((x_171)-(y_165)))) 518 g_167 = (lambda x_170: h_166((x_170)*(x_170))) 519 h_166 = (lambda x_169: x_169) 520 return g_167(39) 521 522 523def g70(): 524 """ 525 >>> g70() 526 -1 527 """ 528 f_173 = (lambda x_175: (x_175)+(1)) 529 g_172 = (lambda y_174: f_173(f_173(y_174))) 530 f_173 = (lambda x_176: (x_176)-(1)) 531 return (f_173(1))+(g_172(1)) 532 533 534def g71(): 535 """ 536 >>> g71() 537 [52, [17, [35, [17, 35]]]] 538 """ 539 f_180 = (lambda : (a_179)+(b_178)) 540 a_179 = 17 541 b_178 = 35 542 h_177 = [(lambda : a_179),(lambda : b_178)] 543 return [f_180(),[a_179,[b_178,[(h_177[0])(),(h_177[1])()]]]] 544 545 546def g73(): 547 """ 548 >>> g73() 549 120 550 """ 551 x_183 = 5 552 def g72(): 553 a_181 = 1 554 return lambda : (a_181) 555 th_182 = g72() 556 fact_184 = (lambda n_186, th_185: (th_185()) if (n_186 == 0) else ((n_186)*(fact_184((n_186)-(1), th_185)))) 557 return fact_184(x_183, th_182) 558 559 560def g74(): 561 """ 562 >>> g74() 563 [120, -120] 564 """ 565 negative_188 = (lambda n_187: (n_187 < 0)) 566 fact_190 = (lambda n_192: (1) if (n_192 == 0) else ((n_192)*(fact_190((n_192)-(1))))) 567 call_fact_189 = (lambda n_191: (fact_190(n_191)) if ((not negative_188(n_191))) else ((0)-(fact_190((0)-(n_191))))) 568 return [call_fact_189(5),call_fact_189(-5)] 569 570 571def g75(): 572 """ 573 >>> g75() 574 [[33, 55], [77, 99]] 575 """ 576 return (lambda a_193: (lambda b_194: (lambda c_195: (lambda d_196: [[a_193,b_194],[c_195,d_196]]))))(33)(55)(77)(99) 577 578