Minor cleanup.
This commit is contained in:
parent
9ee50a6268
commit
fc45727008
|
|
@ -499,6 +499,8 @@
|
|||
" s[u] = v\n",
|
||||
" elif isinstance(v, int):\n",
|
||||
" s[v] = u\n",
|
||||
" else:\n",
|
||||
" s = False\n",
|
||||
"\n",
|
||||
" return s"
|
||||
]
|
||||
|
|
@ -884,6 +886,8 @@
|
|||
" s = unify(a, c, s)\n",
|
||||
" if s != False:\n",
|
||||
" s = unify(b, d, s)\n",
|
||||
" else:\n",
|
||||
" s = False\n",
|
||||
"\n",
|
||||
" return s"
|
||||
]
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -94,7 +94,6 @@ definitions = ('''\
|
|||
of == swap at
|
||||
product == 1 swap [*] step
|
||||
flatten == [] swap [concat] step
|
||||
unit == [] cons
|
||||
quoted == [unit] dip
|
||||
unquoted == [i] dip
|
||||
enstacken == stack [clear] dip
|
||||
|
|
@ -120,13 +119,14 @@ range_to_zero == unit [down_to_zero] infra
|
|||
anamorphism == [pop []] swap [dip swons] genrec
|
||||
range == [0 <=] [1 - dup] anamorphism
|
||||
while == swap [nullary] cons dup dipd concat loop
|
||||
dudipd == dup dipd
|
||||
dupdipd == dup dipd
|
||||
primrec == [i] genrec
|
||||
step_zero == 0 roll> step
|
||||
codireco == cons dip rest cons
|
||||
make_generator == [codireco] ccons
|
||||
ccons == cons cons
|
||||
'''
|
||||
##ccons == cons cons
|
||||
##unit == [] cons
|
||||
##second == rest first
|
||||
##third == rest rest first
|
||||
##swons == swap cons
|
||||
|
|
@ -572,12 +572,12 @@ def clear(stack):
|
|||
## return second, (tos, stack)
|
||||
|
||||
|
||||
@inscribe
|
||||
@SimpleFunctionWrapper
|
||||
def swaack(stack):
|
||||
'''swap stack'''
|
||||
old_stack, stack = stack
|
||||
return stack, old_stack
|
||||
##@inscribe
|
||||
##@SimpleFunctionWrapper
|
||||
##def swaack(stack):
|
||||
## '''swap stack'''
|
||||
## old_stack, stack = stack
|
||||
## return stack, old_stack
|
||||
|
||||
|
||||
##@inscribe
|
||||
|
|
|
|||
|
|
@ -5,55 +5,55 @@ def _Tree_add_Ee(stack):
|
|||
"""
|
||||
::
|
||||
|
||||
([a3 a4 ...0] a2 a1 a0 -- [a1 a2 ...0])
|
||||
([a4 a5 ...1] a3 a2 a1 -- [a2 a3 ...1])
|
||||
|
||||
"""
|
||||
(a0, (a1, (a2, ((a3, (a4, s0)), s1)))) = stack
|
||||
return ((a1, (a2, s0)), s1)
|
||||
(a1, (a2, (a3, ((a4, (a5, s1)), s2)))) = stack
|
||||
return ((a2, (a3, s1)), s2)
|
||||
|
||||
|
||||
def _Tree_delete_R0(stack):
|
||||
"""
|
||||
::
|
||||
|
||||
([a1 ...0] a0 -- [a1 ...0] a1 a0 a0)
|
||||
([a2 ...1] a1 -- [a2 ...1] a2 a1 a1)
|
||||
|
||||
"""
|
||||
(a0, ((a1, s0), s1)) = stack
|
||||
return (a0, (a0, (a1, ((a1, s0), s1))))
|
||||
(a1, ((a2, s1), s2)) = stack
|
||||
return (a1, (a1, (a2, ((a2, s1), s2))))
|
||||
|
||||
|
||||
def _Tree_delete_clear_stuff(stack):
|
||||
"""
|
||||
::
|
||||
|
||||
(a2 a1 [a0 ...0] -- [...0])
|
||||
(a3 a2 [a1 ...1] -- [...1])
|
||||
|
||||
"""
|
||||
((a0, s0), (a1, (a2, s1))) = stack
|
||||
return (s0, s1)
|
||||
((a1, s1), (a2, (a3, s2))) = stack
|
||||
return (s1, s2)
|
||||
|
||||
|
||||
def _Tree_get_E(stack):
|
||||
"""
|
||||
::
|
||||
|
||||
([a2 a3 ...0] a1 a0 -- a3)
|
||||
([a3 a4 ...1] a2 a1 -- a4)
|
||||
|
||||
"""
|
||||
(a0, (a1, ((a2, (a3, s0)), s1))) = stack
|
||||
return (a3, s1)
|
||||
(a1, (a2, ((a3, (a4, s1)), s2))) = stack
|
||||
return (a4, s2)
|
||||
|
||||
|
||||
def ccons(stack):
|
||||
"""
|
||||
::
|
||||
|
||||
(a1 a0 [...0] -- [a1 a0 ...0])
|
||||
(a2 a1 [...1] -- [a2 a1 ...1])
|
||||
|
||||
"""
|
||||
(s0, (a0, (a1, s1))) = stack
|
||||
return ((a1, (a0, s0)), s1)
|
||||
(s1, (a1, (a2, s2))) = stack
|
||||
return ((a2, (a1, s1)), s2)
|
||||
|
||||
|
||||
def cons(stack):
|
||||
|
|
@ -115,22 +115,22 @@ def first_two(stack):
|
|||
"""
|
||||
::
|
||||
|
||||
([a0 a1 ...0] -- a0 a1)
|
||||
([a1 a2 ...1] -- a1 a2)
|
||||
|
||||
"""
|
||||
((a0, (a1, s0)), s1) = stack
|
||||
return (a1, (a0, s1))
|
||||
((a1, (a2, s1)), s2) = stack
|
||||
return (a2, (a1, s2))
|
||||
|
||||
|
||||
def fourth(stack):
|
||||
"""
|
||||
::
|
||||
|
||||
([a0 a1 a2 a3 ...0] -- a3)
|
||||
([a1 a2 a3 a4 ...1] -- a4)
|
||||
|
||||
"""
|
||||
((a0, (a1, (a2, (a3, s0)))), s1) = stack
|
||||
return (a3, s1)
|
||||
((a1, (a2, (a3, (a4, s1)))), s2) = stack
|
||||
return (a4, s2)
|
||||
|
||||
|
||||
def over(stack):
|
||||
|
|
@ -247,22 +247,22 @@ def rrest(stack):
|
|||
"""
|
||||
::
|
||||
|
||||
([a0 a1 ...0] -- [...0])
|
||||
([a1 a2 ...1] -- [...1])
|
||||
|
||||
"""
|
||||
((a0, (a1, s0)), s1) = stack
|
||||
return (s0, s1)
|
||||
((a1, (a2, s1)), s2) = stack
|
||||
return (s1, s2)
|
||||
|
||||
|
||||
def second(stack):
|
||||
"""
|
||||
::
|
||||
|
||||
([a0 a1 ...0] -- a1)
|
||||
([a1 a2 ...1] -- a2)
|
||||
|
||||
"""
|
||||
((a0, (a1, s0)), s1) = stack
|
||||
return (a1, s1)
|
||||
((a1, (a2, s1)), s2) = stack
|
||||
return (a2, s2)
|
||||
|
||||
|
||||
def stack(stack):
|
||||
|
|
@ -280,22 +280,33 @@ def stuncons(stack):
|
|||
"""
|
||||
::
|
||||
|
||||
(... a0 -- ... a0 a0 [...])
|
||||
(... a1 -- ... a1 a1 [...])
|
||||
|
||||
"""
|
||||
(a0, s0) = stack
|
||||
return (s0, (a0, (a0, s0)))
|
||||
(a1, s1) = stack
|
||||
return (s1, (a1, (a1, s1)))
|
||||
|
||||
|
||||
def stununcons(stack):
|
||||
"""
|
||||
::
|
||||
|
||||
(... a1 a0 -- ... a1 a0 a0 a1 [...])
|
||||
(... a2 a1 -- ... a2 a1 a1 a2 [...])
|
||||
|
||||
"""
|
||||
(a0, (a1, s0)) = stack
|
||||
return (s0, (a1, (a0, (a0, (a1, s0)))))
|
||||
(a1, (a2, s1)) = stack
|
||||
return (s1, (a2, (a1, (a1, (a2, s1)))))
|
||||
|
||||
|
||||
def swaack(stack):
|
||||
"""
|
||||
::
|
||||
|
||||
([...1] -- [...0])
|
||||
|
||||
"""
|
||||
(s1, s0) = stack
|
||||
return (s0, s1)
|
||||
|
||||
|
||||
def swap(stack):
|
||||
|
|
@ -313,22 +324,22 @@ def swons(stack):
|
|||
"""
|
||||
::
|
||||
|
||||
([...0] a0 -- [a0 ...0])
|
||||
([...1] a1 -- [a1 ...1])
|
||||
|
||||
"""
|
||||
(a0, (s0, s1)) = stack
|
||||
return ((a0, s0), s1)
|
||||
(a1, (s1, s2)) = stack
|
||||
return ((a1, s1), s2)
|
||||
|
||||
|
||||
def third(stack):
|
||||
"""
|
||||
::
|
||||
|
||||
([a0 a1 a2 ...0] -- a2)
|
||||
([a1 a2 a3 ...1] -- a3)
|
||||
|
||||
"""
|
||||
((a0, (a1, (a2, s0))), s1) = stack
|
||||
return (a2, s1)
|
||||
((a1, (a2, (a3, s1))), s2) = stack
|
||||
return (a3, s2)
|
||||
|
||||
|
||||
def tuck(stack):
|
||||
|
|
@ -353,13 +364,24 @@ def uncons(stack):
|
|||
return (s0, (a1, s23))
|
||||
|
||||
|
||||
def unit(stack):
|
||||
"""
|
||||
::
|
||||
|
||||
(a1 -- [a1 ])
|
||||
|
||||
"""
|
||||
(a1, s23) = stack
|
||||
return ((a1, ()), s23)
|
||||
|
||||
|
||||
def unswons(stack):
|
||||
"""
|
||||
::
|
||||
|
||||
([a0 ...0] -- [...0] a0)
|
||||
([a1 ...1] -- [...1] a1)
|
||||
|
||||
"""
|
||||
((a0, s0), s1) = stack
|
||||
return (a0, (s0, s1))
|
||||
((a1, s1), s2) = stack
|
||||
return (a1, (s1, s2))
|
||||
|
||||
|
|
|
|||
|
|
@ -256,8 +256,6 @@ def infer(e, F=ID):
|
|||
a0, a1, a2, a3, a4, a5, a6, a7, a8, a9 = A
|
||||
n0, n1, n2, n3, n4, n5, n6, n7, n8, n9 = N
|
||||
s0, s1, s2, s3, s4, s5, s6, s7, s8, s9 = S
|
||||
f0, f1, f2, f3, f4, f5, f6, f7, f8, f9 = F = map(FloatJoyType, _R)
|
||||
i0, i1, i2, i3, i4, i5, i6, i7, i8, i9 = I = map(IntJoyType, _R)
|
||||
|
||||
_R = range(1, 11)
|
||||
As = map(AnyStarJoyType, _R)
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@ class AnyJoyType(object):
|
|||
return hash(repr(self))
|
||||
|
||||
|
||||
class BooleanJoyType(AnyJoyType): prefix = 'b'
|
||||
class NumberJoyType(AnyJoyType): prefix = 'n'
|
||||
class FloatJoyType(NumberJoyType): prefix = 'f'
|
||||
class IntJoyType(FloatJoyType): prefix = 'i'
|
||||
|
|
@ -41,12 +42,6 @@ class StackJoyType(AnyJoyType):
|
|||
return False
|
||||
|
||||
|
||||
_R = range(10)
|
||||
A = a0, a1, a2, a3, a4, a5, a6, a7, a8, a9 = map(AnyJoyType, _R)
|
||||
N = n0, n1, n2, n3, n4, n5, n6, n7, n8, n9 = map(NumberJoyType, _R)
|
||||
S = s0, s1, s2, s3, s4, s5, s6, s7, s8, s9 = map(StackJoyType, _R)
|
||||
|
||||
|
||||
class JoyTypeError(Exception): pass
|
||||
|
||||
|
||||
|
|
@ -212,7 +207,7 @@ def _to_str(term, stack, switch):
|
|||
end = '' if term == () else '...'
|
||||
#end = '...'
|
||||
else:
|
||||
end = '...%i' % term.number
|
||||
end = '' if term == () else '...%i' % term.number
|
||||
a.append(end)
|
||||
return '[%s]' % ' '.join(a)
|
||||
|
||||
|
|
@ -238,43 +233,62 @@ def __(*seq):
|
|||
return stack
|
||||
|
||||
|
||||
_R = range(10)
|
||||
A = a0, a1, a2, a3, a4, a5, a6, a7, a8, a9 = map(AnyJoyType, _R)
|
||||
B = b0, b1, b2, b3, b4, b5, b6, b7, b8, b9 = map(BooleanJoyType, _R)
|
||||
N = n0, n1, n2, n3, n4, n5, n6, n7, n8, n9 = map(NumberJoyType, _R)
|
||||
S = s0, s1, s2, s3, s4, s5, s6, s7, s8, s9 = map(StackJoyType, _R)
|
||||
F = f0, f1, f2, f3, f4, f5, f6, f7, f8, f9 = F = map(FloatJoyType, _R)
|
||||
I = i0, i1, i2, i3, i4, i5, i6, i7, i8, i9 = I = map(IntJoyType, _R)
|
||||
|
||||
|
||||
def defs():
|
||||
rolldown = __(a1, a2, a3), __(a2, a3, a1)
|
||||
rollup = __(a1, a2, a3), __(a3, a1, a2)
|
||||
pop = __(a1), __()
|
||||
popop = __(a2, a1,), __()
|
||||
popd = __(a2, a1,), __(a1)
|
||||
popdd = __(a3, a2, a1,), __(a2, a1,)
|
||||
popopd = __(a3, a2, a1,), __(a1)
|
||||
popopdd = __(a4, a3, a2, a1,), __(a2, a1)
|
||||
swap = __(a1, a2), __(a2, a1)
|
||||
rest = __((a1, s0),), __(s0,)
|
||||
rrest = C(rest, rest)
|
||||
cons = __(a1, s0), __((a1, s0),)
|
||||
ccons = C(cons, cons)
|
||||
uncons = __((a1, s0),), __(a1, s0)
|
||||
unswons = C(uncons, swap)
|
||||
swons = C(swap, cons)
|
||||
dup = __(a1,), __(a1, a1)
|
||||
dupd = __(a2, a1), __(a2, a2, a1)
|
||||
dupdd = __(a3, a2, a1), __(a3, a3, a2, a1)
|
||||
first = __((a1, s1),), __(a1,)
|
||||
second = C(rest, first)
|
||||
third = C(rest, second)
|
||||
fourth = C(rest, third)
|
||||
tuck = __(a2, a1), __(a1, a2, a1)
|
||||
over = __(a2, a1), __(a2, a1, a2)
|
||||
pop = __(a1), __()
|
||||
popd = __(a2, a1,), __(a1)
|
||||
popdd = __(a3, a2, a1,), __(a2, a1,)
|
||||
popop = __(a2, a1,), __()
|
||||
popopd = __(a3, a2, a1,), __(a1)
|
||||
popopdd = __(a4, a3, a2, a1,), __(a2, a1)
|
||||
rest = __((a1, s0),), __(s0,)
|
||||
rolldown = __(a1, a2, a3), __(a2, a3, a1)
|
||||
rollup = __(a1, a2, a3), __(a3, a1, a2)
|
||||
rrest = C(rest, rest)
|
||||
second = C(rest, first)
|
||||
stack = s0, (s0, s0)
|
||||
swaack = (s1, s0), (s0, s1)
|
||||
swap = __(a1, a2), __(a2, a1)
|
||||
swons = C(swap, cons)
|
||||
third = C(rest, second)
|
||||
tuck = __(a2, a1), __(a1, a2, a1)
|
||||
uncons = __((a1, s0),), __(a1, s0)
|
||||
unswons = C(uncons, swap)
|
||||
stuncons = C(stack, uncons)
|
||||
stununcons = C(stack, uncons, uncons)
|
||||
first_two = C(uncons, uncons, pop)
|
||||
unit = __(a1), __((a1, ()))
|
||||
|
||||
mul = __(n1, n2), __(n3,)
|
||||
eq = ge = gt = le = lt = ne = __(n1, n2), __(b1)
|
||||
|
||||
and_ = __(b1, b2), __(b3)
|
||||
bool_ = not_ = __(a1), __(b1)
|
||||
|
||||
|
||||
|
||||
add = div = floordiv = modulus = mul = pow_ = sub = truediv = \
|
||||
lshift = rshift = __(n1, n2), __(n3,)
|
||||
sqrt = C(dup, mul)
|
||||
succ = pred = __(n1,), __(n2,)
|
||||
succ = pred = neg = __(n1,), __(n2,)
|
||||
divmod_ = pm = __(n2, n1), __(n4, n3)
|
||||
|
||||
first_two = C(uncons, uncons, pop)
|
||||
fourth = C(rest, third)
|
||||
|
||||
_Tree_add_Ee = C(pop, swap, rolldown, rrest, ccons)
|
||||
_Tree_get_E = C(popop, second)
|
||||
_Tree_delete_clear_stuff = C(rollup, popop, rest)
|
||||
|
|
|
|||
Loading…
Reference in New Issue