Changeset 1928 for lang/unlambda
- Timestamp:
- 11/23/07 14:11:19 (12 months ago)
- Files:
-
- 1 copied
-
lang/unlambda/impl/in_python/unlambda_oneliner.py (copied) (copied from lang/unlambda/impl/in_python/unlambda_lambda.py) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
lang/unlambda/impl/in_python/unlambda_oneliner.py
r1767 r1928 25 25 26 26 # Node 27 I = lambda:lambda c:c(lambda X,c:c(X)) 27 28 28 Dot = lambda char:lambda c:c( 29 29 lambda X,c:sys.stdout.write(char)or c(X)) … … 34 34 c(lambda Y,c:nY(lambda X:c(lambda X,c:X(Y,c)))) 35 35 )or( 36 nY(lambda Y: lambda:X(Y, c))))37 D = lambda:D_ 36 nY(lambda Y:lambda:X(Y, c)))) 37 38 38 D_ = lambda c:c(D_) 39 V0 = lambda X,c:c(V0) 40 V = lambda:lambda c:c(V0) 41 K = lambda:lambda c:c(lambda X,c:c(lambda Y,c:c(X))) 42 C = lambda:lambda c:c(lambda Y,c:lambda:Y(lambda F,c_:c(F),c)) 43 S = lambda:lambda c:c( 39 lambda V=lambda X,c:c(V):V 40 41 def _parse(iter): 42 return { 43 "i": lambda:lambda c:c(lambda X,c:c(X)), 44 "d": lambda:D_, 45 "c": lambda:lambda c:c(lambda Y,c:lambda:Y(lambda F,c_:c(F),c)), 46 "v": lambda:lambda c:c(V), 47 "s": lambda:lambda c:c( 44 48 lambda X,c:c( 45 49 lambda Y,c:c( … … 51 55 Apply( 52 56 lambda c:c(Y), 53 lambda c:c(Z))))(c)))) 54 55 def _parse(iter): 56 return { 57 "i": lambda: I(), 58 "d": lambda: D(), 59 "c": lambda: C(), 60 "v": lambda: V(), 61 "s": lambda: S(), 62 "k": lambda: K(), 57 lambda c:c(Z))))(c)))), 58 "k": lambda:lambda c:c(lambda X,c:c(lambda Y,c:c(X))), 63 59 "r": lambda: Dot("\n"), 64 60 ".": lambda: Dot(iter.next()), … … 66 62 }.get(iter.next(), lambda: _parse(iter))() 67 63 68 def parse(s): 69 return _parse(list(s).__iter__()) 64 parse = lambda s: _parse(list(s).__iter__()) 70 65 71 66 # Main loop 67 68 unlambda = lambda:None 69 unlambda.next = lambda :unlambda.__setattr__( 70 "task", 71 unlambda.task()) or unlambda.task 72 73 from itertools import count, ifilter 72 74 def run(s): 73 task = lambda:parse(s)(lambda f:lambda:None) 74 while task: 75 task = task() 75 unlambda.__setattr__("task", lambda:parse(s)(lambda f:lambda:None)) 76 ifilter(lambda x:not(unlambda.next()), count()).next() 76 77 77 78 # Test … … 90 91 """) 91 92 93 _test() 94 print "ok."
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)