Changeset 1767 for lang/unlambda
- Timestamp:
- 11/19/07 01:56:36 (12 months ago)
- Files:
-
- 1 modified
-
lang/unlambda/impl/in_python/unlambda_lambda.py (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
lang/unlambda/impl/in_python/unlambda_lambda.py
r1766 r1767 24 24 import sys 25 25 26 # Main loop27 #28 def run(s):29 task = lambda:parse(s)(FinalCont)30 try:31 while True:32 task = task()33 except StopIteration, e:34 return35 36 # Continuation37 FinalCont = lambda f:FinalTask38 39 # Task40 #41 42 def FinalTask(X=None):43 raise StopIteration()44 45 ApplyTask = lambda X,Y,c:lambda:X(Y,c)46 47 26 # Node 48 # 49 I = lambda: lambda c:c(lambda X,c:c(X)) 50 Dot = lambda char: (lambda c: c(lambda X, c: sys.stdout.write(char) or c(X)))27 I = lambda:lambda c:c(lambda X,c:c(X)) 28 Dot = lambda char:lambda c:c( 29 lambda X,c:sys.stdout.write(char)or c(X)) 51 30 Apply = lambda nX,nY:lambda c:\ 52 lambda:nX(lambda X: \53 lambda: \31 lambda:nX(lambda X: 32 lambda: 54 33 (X == D_)and( 55 34 c(lambda Y,c:nY(lambda X:c(lambda X,c:X(Y,c)))) 56 35 )or( 57 36 nY(lambda Y: lambda :X(Y, c)))) 37 D = lambda:D_ 58 38 D_ = lambda c:c(D_) 59 D = lambda :D_60 C = lambda :lambda c:c(lambda Y,c: lambda :Y(lambda F,c_:c(F),c))61 39 V0 = lambda X,c:c(V0) 62 40 V = lambda:lambda c:c(V0) 63 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)) 64 43 S = lambda:lambda c:c( 65 44 lambda X,c:c( … … 77 56 return { 78 57 "i": lambda: I(), 79 ".": lambda: Dot(iter.next()), 80 "`": lambda: Apply(_parse(iter), _parse(iter)), 81 "r": lambda: Dot("\n"), 82 "d": lambda: D(), # special form 58 "d": lambda: D(), 83 59 "c": lambda: C(), 84 60 "v": lambda: V(), 85 61 "s": lambda: S(), 86 62 "k": lambda: K(), 63 "r": lambda: Dot("\n"), 64 ".": lambda: Dot(iter.next()), 65 "`": lambda: Apply(_parse(iter), _parse(iter)), 87 66 }.get(iter.next(), lambda: _parse(iter))() 88 67 … … 90 69 return _parse(list(s).__iter__()) 91 70 71 # Main loop 72 def run(s): 73 task = lambda:parse(s)(lambda f:lambda:None) 74 while task: 75 task = task() 76 77 # Test 92 78 def _test(): 93 79 import doctest
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)