Blob Blame History Raw
# 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)