# mode: run # tag: closures, lambda # Battery of tests for closures in Cython. Based on the collection of # compiler tests from P423/B629 at Indiana University, Spring 1999 and # Fall 2000. Special thanks to R. Kent Dybvig, Dan Friedman, Kevin # Millikin, and everyone else who helped to generate the original # tests. Converted into a collection of Python/Cython tests by Craig # Citro. # # Note: This set of tests is split (somewhat randomly) into several # files, simply because putting all the tests in a single file causes # gcc and g++ to buckle under the load. # def g0(): """ >>> g0() 4000 """ return (lambda y_1: y_1)(4000) def g1(): """ >>> g1() 1 """ f_3 = (lambda x_2: x_2) return (f_3(0)+1) def g2(): """ >>> g2() 4 """ f_5 = (lambda y_4: y_4) return f_5(f_5(4)) def g3(): """ >>> g3() 4 """ return (lambda f_7: f_7(f_7(4)))((lambda y_6: y_6)) def g5(): """ >>> g5() 9000 """ def g4(): a_8 = 4000 return lambda b_9: ((a_8)+(b_9)) return g4()(5000) def g6(): """ >>> g6() 9000 """ return (lambda a_10: (lambda b_11: (a_10)+(b_11)))(4000)(5000) def g7(): """ >>> g7() 2 """ return (lambda f_13: f_13(f_13(0)))((lambda x_12: (x_12+1))) def g8(): """ >>> g8() 0 """ f_16 = (lambda x_15, y_14: x_15) a_17 = f_16(0, 1) return f_16(a_17, a_17) def g10(): """ >>> g10() 3 """ f_19 = (lambda x_18: x_18) def g9(): a_22 = 0 b_21 = 1 c_20 = 2 return (f_19(a_22))+((f_19(b_21))+(f_19(c_20))) return (f_19(0))+(g9()) def g12(): """ >>> g12() 2 """ def g11(): x_23 = 1 return lambda y_24: ((x_23)+(y_24)) f_25 = g11() x_26 = 0 return f_25(f_25(x_26)) def g14(): """ >>> g14() 3050 """ def g13(): t_29 = (lambda x_28: (x_28)+(50)) return lambda f_30: (t_29(f_30(1000))) return g13()((lambda y_27: (y_27)+(2000))) def g15(): """ >>> g15() 3050 """ return (lambda t_33: (lambda f_34: t_33(f_34(1000))))((lambda x_32: (x_32)+(50)))((lambda y_31: (y_31)+(2000))) def g17(): """ >>> g17() 2050 """ def g16(): t_35 = 50 return lambda f_36: ((t_35)+(f_36())) return g16()((lambda : 2000)) def g18(): """ >>> g18() 2050 """ return (lambda t_37: (lambda f_38: (t_37)+(f_38())))(50)((lambda : 2000)) def g20(): """ >>> g20() 700 """ def g19(): x_39 = 300 return lambda y_40: ((x_39)+(y_40)) return g19()(400) def g21(): """ >>> g21() 0 """ x_44 = 3 f_43 = (lambda x_42, y_41: x_42) if (f_43(0, 0)): return f_43(f_43(0, 0), x_44) else: return 0 def g22(): """ >>> g22() False """ f_46 = (lambda x_45: (x_45) if (((not ((x_45[0]) == 0))) if (isinstance(x_45, list)) else (False)) else (False)) return f_46([0,[0,[]]]) def g23(): """ >>> g23() False """ 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)) return f_48(0) def g24(): """ >>> g24() [] """ f_50 = (lambda x_49: (x_49) if ((True) if (isinstance(x_49, list)) else ((x_49 == []))) else ([])) return f_50(0) def g25(): """ >>> g25() 0 """ y_51 = 4 f_54 = (lambda x_53, y_52: 0) return f_54(f_54(y_51, y_51), f_54(y_51, y_51)) def g26(): """ >>> g26() 0 """ y_55 = 4 f_58 = (lambda x_57, y_56: 0) return f_58(f_58(y_55, f_58(y_55, y_55)), f_58(y_55, f_58(y_55, y_55))) def g27(): """ >>> g27() 4 """ return (lambda y_59: (lambda f_61: f_61(f_61(y_59)))((lambda y_60: y_60)))(4) def g28(): """ >>> g28() 23 """ f_63 = (lambda x_62: x_62) return ((1) if (False) else (f_63(22))+1) def g29(): """ >>> g29() 5061 """ f_68 = (lambda x_65: ((not x_65)) if (x_65) else (x_65)) f2_67 = (lambda x_64: (10)*(x_64)) x_66 = 23 return ((1) if (f_68(x_66 == 0)) else ((x_66)*(f2_67((x_66-1))))+1) def g30(): """ >>> g30() 1 """ one_69 = (lambda n_70: (1) if (n_70 == 0) else (one_69((n_70-1)))) return one_69(13) def g31(): """ >>> g31() True """ even_72 = (lambda x_74: (True) if (x_74 == 0) else (odd_71((x_74-1)))) odd_71 = (lambda x_73: (False) if (x_73 == 0) else (even_72((x_73-1)))) return odd_71(13) def g32(): """ >>> g32() False """ even_76 = (lambda x_78: (True) if (x_78 == 0) else (odd_75((x_78-1)))) odd_75 = (lambda x_77: (False) if (x_77 == 0) else (even_76((x_77-1)))) return even_76(13) def g34(): """ >>> g34() True """ even_80 = (lambda x_79: x_79) def g33(): even_82 = (lambda x_84: (True) if (x_84 == 0) else (odd_81((x_84-1)))) odd_81 = (lambda x_83: (False) if (x_83 == 0) else (even_82((x_83-1)))) return odd_81(13) return even_80(g33()) def g35(): """ >>> g35() 120 """ fact_85 = (lambda n_86: (1) if (n_86 == 0) else ((n_86)*(fact_85((n_86-1))))) return fact_85(5) def g38(): """ >>> g38() 10 """ x_87 = 5 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))) def g37(): def g36(q_93, r_92): p_94 = (q_93)*(r_92) e_96 = (lambda n_98: (c_88(p_94)) if (n_98 == 0) else (o_95((n_98)-(1)))) o_95 = (lambda n_97: (c_88(x_87)) if (n_97 == 0) else (e_96((n_97)-(1)))) return e_96((q_93)*(r_92)) return g36 b_89 = g37() c_88 = (lambda x_91: (5)*(x_91)) return a_90(3, 2, 1) def g39(): """ >>> g39() 120 """ fact_104 = (lambda fact_103, n_102: (1) if (n_102 == 0) else ((fact_103(fact_103, (n_102-1)))*(n_102))) return fact_104(fact_104, 5) def g40(): """ >>> g40() 35 """ 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) def g41(): """ >>> g41() 6 """ sum_112 = (lambda sum_111, ls_110: (0) if ((ls_110 == [])) else (((ls_110[0]))+(sum_111(sum_111, (ls_110[1]))))) return sum_112(sum_112, [1,[2,[3,[]]]]) def g46(): """ >>> g46() 1500 """ def g45(): def g44(): def g42(a_113): def g43(): (a_113)+(200 if True else None) return 1500 return g43 return g42 return g44()(1000) return g45()() def g53(): """ >>> g53() 2600 """ def g52(): def g51(): def g50(): def g47(a_114): def g48(b_115): a_114 = 200 if b_115 else None def g49(c_116): c_116 = 400 if 300 else None return (a_114)+((b_115)+(c_116)) return g49 return g48 return g47 return g50()(1000) return g51()(2000) return g52()(3000) def g54(): """ >>> g54() 5 """ return (lambda f_118: f_118(f_118(5)))((lambda x_117: x_117)) def g56(): """ >>> g56() 8000 """ def g55(): f_120 = (lambda x_119: (x_119)+(3000)) return lambda y_121: (f_120(f_120(y_121))) return g55()(2000) def g57(): """ >>> g57() 120 """ 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)))) return fact_125(fact_125, 5, 1) def g58(): """ >>> g58() 3 """ f_127 = (lambda x_126: (lambda : x_126())) return f_127((lambda : 3))() def g59(): """ >>> g59() 22 """ f_129 = (lambda x_132: (x_132)+((lambda y_133: (lambda z_134: (y_133)+(z_134)))(6)(7))) g_128 = (5)+((lambda w_131, u_130: (w_131)+(u_130))(8, 9)) return g_128 def g60(): """ >>> g60() 0 """ loop_135 = (lambda : (lambda : loop_135())) loop_135() return 0 def g63(): """ >>> g63() 668 """ def g62(): def g61(): loop_137 = (lambda link_138: (lambda : link_138())) return loop_137((lambda : 668)) return g61 f_136 = g62() return f_136()() def g64(): """ >>> g64() 17 """ k_141 = (lambda x_140, y_139: x_140) b_142 = 17 return k_141(k_141(k_141, 37), 37)(b_142, (b_142)*(b_142)) def g65(): """ >>> g65() 37 """ f_145 = (lambda g_144, u_143: g_144((g_144(37)) if (u_143) else (u_143))) return f_145((lambda x_146: x_146), 75) def g66(): """ >>> g66() 4687 """ f_150 = (lambda h_148, u_147: h_148((h_148((u_147)+(37))) if (u_147) else (u_147))) w_149 = 62 return f_150((lambda x_151: (w_149)-(x_151)), (75)*(w_149)) def g67(): """ >>> g67() True """ t_153 = True f_152 = False bools_156 = [t_153,f_152] id_155 = (lambda x_154: (f_152) if ((not x_154)) else (t_153)) even_158 = (lambda x_160: ((bools_156[0])) if (id_155(x_160 == 0)) else (odd_157((x_160)-(1)))) odd_157 = (lambda y_159: (id_155((bools_156[1]))) if (y_159 == 0) else (even_158((y_159)-(1)))) return odd_157(5) def g68(): """ >>> g68() 5 """ f_162 = (lambda x_164: (x_164)+(1)) g_161 = (lambda y_163: f_162(f_162(y_163))) return (f_162(1))+(g_161(1)) def g69(): """ >>> g69() 1521 """ y_165 = 3 f_168 = (lambda x_171: (g_167((x_171)+(1))) if (x_171 == 0) else (f_168((x_171)-(y_165)))) g_167 = (lambda x_170: h_166((x_170)*(x_170))) h_166 = (lambda x_169: x_169) return g_167(39) def g70(): """ >>> g70() -1 """ f_173 = (lambda x_175: (x_175)+(1)) g_172 = (lambda y_174: f_173(f_173(y_174))) f_173 = (lambda x_176: (x_176)-(1)) return (f_173(1))+(g_172(1)) def g71(): """ >>> g71() [52, [17, [35, [17, 35]]]] """ f_180 = (lambda : (a_179)+(b_178)) a_179 = 17 b_178 = 35 h_177 = [(lambda : a_179),(lambda : b_178)] return [f_180(),[a_179,[b_178,[(h_177[0])(),(h_177[1])()]]]] def g73(): """ >>> g73() 120 """ x_183 = 5 def g72(): a_181 = 1 return lambda : (a_181) th_182 = g72() fact_184 = (lambda n_186, th_185: (th_185()) if (n_186 == 0) else ((n_186)*(fact_184((n_186)-(1), th_185)))) return fact_184(x_183, th_182) def g74(): """ >>> g74() [120, -120] """ negative_188 = (lambda n_187: (n_187 < 0)) fact_190 = (lambda n_192: (1) if (n_192 == 0) else ((n_192)*(fact_190((n_192)-(1))))) call_fact_189 = (lambda n_191: (fact_190(n_191)) if ((not negative_188(n_191))) else ((0)-(fact_190((0)-(n_191))))) return [call_fact_189(5),call_fact_189(-5)] def g75(): """ >>> g75() [[33, 55], [77, 99]] """ 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)