Changeset 1936 for lang/unlambda

Show
Ignore:
Timestamp:
11/23/07 15:09:09 (6 years ago)
Author:
nishio
Message:

lang/unlambda/impl/in_python: remove "parse"

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • lang/unlambda/impl/in_python/unlambda_oneliner.py

    r1932 r1936  
    2323""" 
    2424import sys 
     25unlambda = lambda:None 
    2526 
    2627# Node 
    2728 
    28 D_ = lambda c:c(D_) 
    29 V=lambda X,c:c(V) 
     29unlambda.D_ = lambda c:c(unlambda.D_) 
     30unlambda.V = lambda X,c:c(unlambda.V) 
    3031 
    31 parse = (lambda Dot, Apply:(lambda s: (lambda f:((lambda g: f(lambda x: g(g)(x))) 
     32# Main loop 
     33 
     34unlambda.next = lambda :unlambda.__setattr__( 
     35    "task", 
     36    unlambda.task()) or unlambda.task 
     37unlambda.init = lambda task: unlambda.__setattr__("task", task) 
     38 
     39from itertools import count, ifilter 
     40run = lambda s:\ 
     41    unlambda.init(lambda:(lambda Dot, Apply:(lambda s: (lambda f:((lambda g: f(lambda x: g(g)(x))) 
    3242              (lambda g: f(lambda x: g(g)(x)))))(lambda _parse: lambda iter:{ 
    3343        "i": lambda:lambda c:c(lambda X,c:c(X)), 
    34         "d": lambda:D_, 
     44        "d": lambda:unlambda.D_, 
    3545        "c": lambda:lambda c:c(lambda Y,c:lambda:Y(lambda F,c_:c(F),c)), 
    36         "v": lambda:lambda c:c(V), 
     46        "v": lambda:lambda c:c(unlambda.V), 
    3747        "s": lambda:lambda c:c( 
    3848        lambda X,c:c( 
     
    5767    lambda:nX(lambda X: 
    5868        lambda: 
    59             (X == D_)and( 
     69            (X == unlambda.D_)and( 
    6070                c(lambda Y,c:nY(lambda X:c(lambda X,c:X(Y,c)))) 
    6171            )or( 
    6272                nY(lambda Y:lambda:X(Y, c))))) # apply 
    63 ) 
    64  
    65 # Main loop 
    66  
    67 unlambda = lambda:None 
    68 unlambda.next = lambda :unlambda.__setattr__( 
    69     "task", 
    70     unlambda.task()) or unlambda.task 
    71  
    72 from itertools import count, ifilter 
    73 run = lambda s:\ 
    74     unlambda.__setattr__("task", lambda:parse(s)(lambda f:lambda:None)) or\ 
     73)(s)(lambda f:lambda:None)) or\ 
    7574    ifilter(lambda x:not(unlambda.next()), count()).next() and None 
    7675