Minor cleanup.
This commit is contained in:
parent
9ee50a6268
commit
fc45727008
|
|
@ -499,6 +499,8 @@
|
||||||
" s[u] = v\n",
|
" s[u] = v\n",
|
||||||
" elif isinstance(v, int):\n",
|
" elif isinstance(v, int):\n",
|
||||||
" s[v] = u\n",
|
" s[v] = u\n",
|
||||||
|
" else:\n",
|
||||||
|
" s = False\n",
|
||||||
"\n",
|
"\n",
|
||||||
" return s"
|
" return s"
|
||||||
]
|
]
|
||||||
|
|
@ -884,6 +886,8 @@
|
||||||
" s = unify(a, c, s)\n",
|
" s = unify(a, c, s)\n",
|
||||||
" if s != False:\n",
|
" if s != False:\n",
|
||||||
" s = unify(b, d, s)\n",
|
" s = unify(b, d, s)\n",
|
||||||
|
" else:\n",
|
||||||
|
" s = False\n",
|
||||||
"\n",
|
"\n",
|
||||||
" return s"
|
" return s"
|
||||||
]
|
]
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -94,7 +94,6 @@ definitions = ('''\
|
||||||
of == swap at
|
of == swap at
|
||||||
product == 1 swap [*] step
|
product == 1 swap [*] step
|
||||||
flatten == [] swap [concat] step
|
flatten == [] swap [concat] step
|
||||||
unit == [] cons
|
|
||||||
quoted == [unit] dip
|
quoted == [unit] dip
|
||||||
unquoted == [i] dip
|
unquoted == [i] dip
|
||||||
enstacken == stack [clear] dip
|
enstacken == stack [clear] dip
|
||||||
|
|
@ -120,13 +119,14 @@ range_to_zero == unit [down_to_zero] infra
|
||||||
anamorphism == [pop []] swap [dip swons] genrec
|
anamorphism == [pop []] swap [dip swons] genrec
|
||||||
range == [0 <=] [1 - dup] anamorphism
|
range == [0 <=] [1 - dup] anamorphism
|
||||||
while == swap [nullary] cons dup dipd concat loop
|
while == swap [nullary] cons dup dipd concat loop
|
||||||
dudipd == dup dipd
|
dupdipd == dup dipd
|
||||||
primrec == [i] genrec
|
primrec == [i] genrec
|
||||||
step_zero == 0 roll> step
|
step_zero == 0 roll> step
|
||||||
codireco == cons dip rest cons
|
codireco == cons dip rest cons
|
||||||
make_generator == [codireco] ccons
|
make_generator == [codireco] ccons
|
||||||
ccons == cons cons
|
|
||||||
'''
|
'''
|
||||||
|
##ccons == cons cons
|
||||||
|
##unit == [] cons
|
||||||
##second == rest first
|
##second == rest first
|
||||||
##third == rest rest first
|
##third == rest rest first
|
||||||
##swons == swap cons
|
##swons == swap cons
|
||||||
|
|
@ -572,12 +572,12 @@ def clear(stack):
|
||||||
## return second, (tos, stack)
|
## return second, (tos, stack)
|
||||||
|
|
||||||
|
|
||||||
@inscribe
|
##@inscribe
|
||||||
@SimpleFunctionWrapper
|
##@SimpleFunctionWrapper
|
||||||
def swaack(stack):
|
##def swaack(stack):
|
||||||
'''swap stack'''
|
## '''swap stack'''
|
||||||
old_stack, stack = stack
|
## old_stack, stack = stack
|
||||||
return stack, old_stack
|
## return stack, old_stack
|
||||||
|
|
||||||
|
|
||||||
##@inscribe
|
##@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
|
(a1, (a2, (a3, ((a4, (a5, s1)), s2)))) = stack
|
||||||
return ((a1, (a2, s0)), s1)
|
return ((a2, (a3, s1)), s2)
|
||||||
|
|
||||||
|
|
||||||
def _Tree_delete_R0(stack):
|
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
|
(a1, ((a2, s1), s2)) = stack
|
||||||
return (a0, (a0, (a1, ((a1, s0), s1))))
|
return (a1, (a1, (a2, ((a2, s1), s2))))
|
||||||
|
|
||||||
|
|
||||||
def _Tree_delete_clear_stuff(stack):
|
def _Tree_delete_clear_stuff(stack):
|
||||||
"""
|
"""
|
||||||
::
|
::
|
||||||
|
|
||||||
(a2 a1 [a0 ...0] -- [...0])
|
(a3 a2 [a1 ...1] -- [...1])
|
||||||
|
|
||||||
"""
|
"""
|
||||||
((a0, s0), (a1, (a2, s1))) = stack
|
((a1, s1), (a2, (a3, s2))) = stack
|
||||||
return (s0, s1)
|
return (s1, s2)
|
||||||
|
|
||||||
|
|
||||||
def _Tree_get_E(stack):
|
def _Tree_get_E(stack):
|
||||||
"""
|
"""
|
||||||
::
|
::
|
||||||
|
|
||||||
([a2 a3 ...0] a1 a0 -- a3)
|
([a3 a4 ...1] a2 a1 -- a4)
|
||||||
|
|
||||||
"""
|
"""
|
||||||
(a0, (a1, ((a2, (a3, s0)), s1))) = stack
|
(a1, (a2, ((a3, (a4, s1)), s2))) = stack
|
||||||
return (a3, s1)
|
return (a4, s2)
|
||||||
|
|
||||||
|
|
||||||
def ccons(stack):
|
def ccons(stack):
|
||||||
"""
|
"""
|
||||||
::
|
::
|
||||||
|
|
||||||
(a1 a0 [...0] -- [a1 a0 ...0])
|
(a2 a1 [...1] -- [a2 a1 ...1])
|
||||||
|
|
||||||
"""
|
"""
|
||||||
(s0, (a0, (a1, s1))) = stack
|
(s1, (a1, (a2, s2))) = stack
|
||||||
return ((a1, (a0, s0)), s1)
|
return ((a2, (a1, s1)), s2)
|
||||||
|
|
||||||
|
|
||||||
def cons(stack):
|
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
|
((a1, (a2, s1)), s2) = stack
|
||||||
return (a1, (a0, s1))
|
return (a2, (a1, s2))
|
||||||
|
|
||||||
|
|
||||||
def fourth(stack):
|
def fourth(stack):
|
||||||
"""
|
"""
|
||||||
::
|
::
|
||||||
|
|
||||||
([a0 a1 a2 a3 ...0] -- a3)
|
([a1 a2 a3 a4 ...1] -- a4)
|
||||||
|
|
||||||
"""
|
"""
|
||||||
((a0, (a1, (a2, (a3, s0)))), s1) = stack
|
((a1, (a2, (a3, (a4, s1)))), s2) = stack
|
||||||
return (a3, s1)
|
return (a4, s2)
|
||||||
|
|
||||||
|
|
||||||
def over(stack):
|
def over(stack):
|
||||||
|
|
@ -247,22 +247,22 @@ def rrest(stack):
|
||||||
"""
|
"""
|
||||||
::
|
::
|
||||||
|
|
||||||
([a0 a1 ...0] -- [...0])
|
([a1 a2 ...1] -- [...1])
|
||||||
|
|
||||||
"""
|
"""
|
||||||
((a0, (a1, s0)), s1) = stack
|
((a1, (a2, s1)), s2) = stack
|
||||||
return (s0, s1)
|
return (s1, s2)
|
||||||
|
|
||||||
|
|
||||||
def second(stack):
|
def second(stack):
|
||||||
"""
|
"""
|
||||||
::
|
::
|
||||||
|
|
||||||
([a0 a1 ...0] -- a1)
|
([a1 a2 ...1] -- a2)
|
||||||
|
|
||||||
"""
|
"""
|
||||||
((a0, (a1, s0)), s1) = stack
|
((a1, (a2, s1)), s2) = stack
|
||||||
return (a1, s1)
|
return (a2, s2)
|
||||||
|
|
||||||
|
|
||||||
def stack(stack):
|
def stack(stack):
|
||||||
|
|
@ -280,22 +280,33 @@ def stuncons(stack):
|
||||||
"""
|
"""
|
||||||
::
|
::
|
||||||
|
|
||||||
(... a0 -- ... a0 a0 [...])
|
(... a1 -- ... a1 a1 [...])
|
||||||
|
|
||||||
"""
|
"""
|
||||||
(a0, s0) = stack
|
(a1, s1) = stack
|
||||||
return (s0, (a0, (a0, s0)))
|
return (s1, (a1, (a1, s1)))
|
||||||
|
|
||||||
|
|
||||||
def stununcons(stack):
|
def stununcons(stack):
|
||||||
"""
|
"""
|
||||||
::
|
::
|
||||||
|
|
||||||
(... a1 a0 -- ... a1 a0 a0 a1 [...])
|
(... a2 a1 -- ... a2 a1 a1 a2 [...])
|
||||||
|
|
||||||
"""
|
"""
|
||||||
(a0, (a1, s0)) = stack
|
(a1, (a2, s1)) = stack
|
||||||
return (s0, (a1, (a0, (a0, (a1, s0)))))
|
return (s1, (a2, (a1, (a1, (a2, s1)))))
|
||||||
|
|
||||||
|
|
||||||
|
def swaack(stack):
|
||||||
|
"""
|
||||||
|
::
|
||||||
|
|
||||||
|
([...1] -- [...0])
|
||||||
|
|
||||||
|
"""
|
||||||
|
(s1, s0) = stack
|
||||||
|
return (s0, s1)
|
||||||
|
|
||||||
|
|
||||||
def swap(stack):
|
def swap(stack):
|
||||||
|
|
@ -313,22 +324,22 @@ def swons(stack):
|
||||||
"""
|
"""
|
||||||
::
|
::
|
||||||
|
|
||||||
([...0] a0 -- [a0 ...0])
|
([...1] a1 -- [a1 ...1])
|
||||||
|
|
||||||
"""
|
"""
|
||||||
(a0, (s0, s1)) = stack
|
(a1, (s1, s2)) = stack
|
||||||
return ((a0, s0), s1)
|
return ((a1, s1), s2)
|
||||||
|
|
||||||
|
|
||||||
def third(stack):
|
def third(stack):
|
||||||
"""
|
"""
|
||||||
::
|
::
|
||||||
|
|
||||||
([a0 a1 a2 ...0] -- a2)
|
([a1 a2 a3 ...1] -- a3)
|
||||||
|
|
||||||
"""
|
"""
|
||||||
((a0, (a1, (a2, s0))), s1) = stack
|
((a1, (a2, (a3, s1))), s2) = stack
|
||||||
return (a2, s1)
|
return (a3, s2)
|
||||||
|
|
||||||
|
|
||||||
def tuck(stack):
|
def tuck(stack):
|
||||||
|
|
@ -353,13 +364,24 @@ def uncons(stack):
|
||||||
return (s0, (a1, s23))
|
return (s0, (a1, s23))
|
||||||
|
|
||||||
|
|
||||||
|
def unit(stack):
|
||||||
|
"""
|
||||||
|
::
|
||||||
|
|
||||||
|
(a1 -- [a1 ])
|
||||||
|
|
||||||
|
"""
|
||||||
|
(a1, s23) = stack
|
||||||
|
return ((a1, ()), s23)
|
||||||
|
|
||||||
|
|
||||||
def unswons(stack):
|
def unswons(stack):
|
||||||
"""
|
"""
|
||||||
::
|
::
|
||||||
|
|
||||||
([a0 ...0] -- [...0] a0)
|
([a1 ...1] -- [...1] a1)
|
||||||
|
|
||||||
"""
|
"""
|
||||||
((a0, s0), s1) = stack
|
((a1, s1), s2) = stack
|
||||||
return (a0, (s0, s1))
|
return (a1, (s1, s2))
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -256,8 +256,6 @@ def infer(e, F=ID):
|
||||||
a0, a1, a2, a3, a4, a5, a6, a7, a8, a9 = A
|
a0, a1, a2, a3, a4, a5, a6, a7, a8, a9 = A
|
||||||
n0, n1, n2, n3, n4, n5, n6, n7, n8, n9 = N
|
n0, n1, n2, n3, n4, n5, n6, n7, n8, n9 = N
|
||||||
s0, s1, s2, s3, s4, s5, s6, s7, s8, s9 = S
|
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)
|
_R = range(1, 11)
|
||||||
As = map(AnyStarJoyType, _R)
|
As = map(AnyStarJoyType, _R)
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,7 @@ class AnyJoyType(object):
|
||||||
return hash(repr(self))
|
return hash(repr(self))
|
||||||
|
|
||||||
|
|
||||||
|
class BooleanJoyType(AnyJoyType): prefix = 'b'
|
||||||
class NumberJoyType(AnyJoyType): prefix = 'n'
|
class NumberJoyType(AnyJoyType): prefix = 'n'
|
||||||
class FloatJoyType(NumberJoyType): prefix = 'f'
|
class FloatJoyType(NumberJoyType): prefix = 'f'
|
||||||
class IntJoyType(FloatJoyType): prefix = 'i'
|
class IntJoyType(FloatJoyType): prefix = 'i'
|
||||||
|
|
@ -41,12 +42,6 @@ class StackJoyType(AnyJoyType):
|
||||||
return False
|
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
|
class JoyTypeError(Exception): pass
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -212,7 +207,7 @@ def _to_str(term, stack, switch):
|
||||||
end = '' if term == () else '...'
|
end = '' if term == () else '...'
|
||||||
#end = '...'
|
#end = '...'
|
||||||
else:
|
else:
|
||||||
end = '...%i' % term.number
|
end = '' if term == () else '...%i' % term.number
|
||||||
a.append(end)
|
a.append(end)
|
||||||
return '[%s]' % ' '.join(a)
|
return '[%s]' % ' '.join(a)
|
||||||
|
|
||||||
|
|
@ -238,43 +233,62 @@ def __(*seq):
|
||||||
return stack
|
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():
|
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),)
|
cons = __(a1, s0), __((a1, s0),)
|
||||||
ccons = C(cons, cons)
|
ccons = C(cons, cons)
|
||||||
uncons = __((a1, s0),), __(a1, s0)
|
|
||||||
unswons = C(uncons, swap)
|
|
||||||
swons = C(swap, cons)
|
|
||||||
dup = __(a1,), __(a1, a1)
|
dup = __(a1,), __(a1, a1)
|
||||||
dupd = __(a2, a1), __(a2, a2, a1)
|
dupd = __(a2, a1), __(a2, a2, a1)
|
||||||
dupdd = __(a3, a2, a1), __(a3, a3, a2, a1)
|
dupdd = __(a3, a2, a1), __(a3, a3, a2, a1)
|
||||||
first = __((a1, s1),), __(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)
|
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)
|
stack = s0, (s0, s0)
|
||||||
swaack = (s1, s0), (s0, s1)
|
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)
|
stuncons = C(stack, uncons)
|
||||||
stununcons = C(stack, uncons, 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)
|
sqrt = C(dup, mul)
|
||||||
succ = pred = __(n1,), __(n2,)
|
succ = pred = neg = __(n1,), __(n2,)
|
||||||
divmod_ = pm = __(n2, n1), __(n4, n3)
|
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_add_Ee = C(pop, swap, rolldown, rrest, ccons)
|
||||||
_Tree_get_E = C(popop, second)
|
_Tree_get_E = C(popop, second)
|
||||||
_Tree_delete_clear_stuff = C(rollup, popop, rest)
|
_Tree_delete_clear_stuff = C(rollup, popop, rest)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue