minor cleanup

This commit is contained in:
Simon Forman 2022-09-07 23:43:50 -07:00
parent e13a7b9f5c
commit ac326590db
3 changed files with 94 additions and 68 deletions

View File

@ -1,4 +1,3 @@
include archive/*
include LICENSE include LICENSE
include joy/defs.txt include joy/defs.txt
recursive-include joy *.py recursive-include joy *.py

View File

@ -1,28 +0,0 @@
'''
Not this one!
Use the other file! derp
'''
class Expression:
def __init__(self, initial_expression=()):
self.current = initial_expression
self.stack = []
def __next__(self):
if self.current:
item, self.current = self.current
return item
if self.stack:
self.current = self.stack.pop()
return self.__next__()
raise StopIteration
def prepend(self, quoted_program):
if self.current:
self.stack.append(self.current)
self.current = quoted_program
from parser import text_to_expression as j
e = Expression(j('23 18'))

View File

@ -390,9 +390,7 @@ def get_n_items(n, stack):
try: try:
item, stack = stack item, stack = stack
except ValueError: except ValueError:
raise StackUnderflowError( raise StackUnderflowError('Not enough values on stack.') from None
'Not enough values on stack.'
) from None
temp.append(item) temp.append(item)
temp.append(stack) temp.append(stack)
return tuple(temp) return tuple(temp)
@ -880,9 +878,7 @@ def rest(stack):
try: try:
_, s1 = s0 _, s1 = s0
except ValueError: except ValueError:
raise StackUnderflowError( raise StackUnderflowError('Cannot take rest of empty list.') from None
'Cannot take rest of empty list.'
) from None
return s1, stack return s1, stack
@ -1105,100 +1101,160 @@ Start with increment and decrement:
-- 1 - -- 1 -
++ 1 + ++ 1 +
= eq Common symbols for operations:
+ add
> gt
< lt
>= ge
<= le
!= ne
<> ne
% mod = eq
+ add + add
- sub > gt
* mul < lt
/ floordiv >= ge
div floordiv <= le
!= ne
<> ne
% mod
+ add
- sub
* mul
/ floordiv
div floordiv
& and
| or
! not
<< lshift
>> rshift
? dup bool ? dup bool
&& nulco [nullary [false]] dip branch && nulco [nullary [false]] dip branch
|| nulco [nullary] dip [true] branch || nulco [nullary] dip [true] branch
!- 0 >= !- 0 >=
<{} [] swap <{} [] swap
<<{} [] rollup <<{} [] rollup
abs dup 0 < [] [neg] branch abs dup 0 < [] [neg] branch
anamorphism [pop []] swap [dip swons] genrec anamorphism [pop []] swap [dip swons] genrec
app1 grba infrst app1 grba infrst
app2 [grba swap grba swap] dip [infrst] cons ii app2 [grba swap grba swap] dip [infrst] cons ii
app3 3 appN app3 3 appN
appN [grabN] codi map disenstacken appN [grabN] codi map disenstacken
at drop first at drop first
average [sum] [size] cleave /
b [i] dip i b [i] dip i
dipd [dip] codi
genrec [[genrec] ccccons] nullary swons concat ifte
tailrec [i] genrec
ifte [nullary] dipd swap branch
ii [dip] dupdip i
infra swons swaack [i] dip swaack
x dup i
pam [i] map
nullary [stack] dinfrirst
unary nullary popd
binary unary popd binary unary popd
ternary binary popd
ccccons ccons ccons ccccons ccons ccons
ccons cons cons ccons cons cons
clear [] swaack pop clear [] swaack pop
cleave fork popdd cleave fork popdd
clop cleave popdd clop cleave popdd
fork [i] app2
cmp [[>] swap] dipd [ifte] ccons [=] swons ifte cmp [[>] swap] dipd [ifte] ccons [=] swons ifte
codi cons dip codi cons dip
codireco codi reco codireco codi reco
dinfrirst dip infrst dinfrirst dip infrst
dipd [dip] codi
disenstacken ? [uncons ?] loop pop disenstacken ? [uncons ?] loop pop
enstacken stack [clear] dip
down_to_zero [0 >] [dup --] while down_to_zero [0 >] [dup --] while
drop [rest] times drop [rest] times
dupd [dup] dip dupd [dup] dip
dupdd [dup] dipd dupdd [dup] dipd
dupdip dupd dip dupdip dupd dip
dupdipd dup dipd dupdipd dup dipd
enstacken stack [clear] dip
first uncons pop
rest uncons popd
first uncons pop
second rest first
third rest second
fourth rest third
flatten <{} [concat] step flatten <{} [concat] step
fork [i] app2
fourth rest third
gcd true [tuck mod dup 0 >] loop pop gcd true [tuck mod dup 0 >] loop pop
genrec [[genrec] ccccons] nullary swons concat ifte
grabN <{} [cons] times grabN <{} [cons] times
grba [stack popd] dip grba [stack popd] dip
hypot [sqr] ii + sqrt hypot [sqr] ii + sqrt
ifte [nullary] dipd swap branch
ii [dip] dupdip i
infra swons swaack [i] dip swaack
infrst infra first infrst infra first
make_generator [codireco] ccons make_generator [codireco] ccons
manual [] words [help] step pop manual [] words [help] step pop
neg 0 swap - neg 0 swap -
not [true] [false] branch not [true] [false] branch
nulco [nullary] cons nulco [nullary] cons
nullary [stack] dinfrirst
of swap at of swap at
pam [i] map
pm [+] [-] clop pm [+] [-] clop
popd [pop] dip popd [pop] dip
popdd [pop] dipd popdd [pop] dipd
popop pop pop popop pop pop
popopop pop popop popopop pop popop
popopd [popop] dip popopd [popop] dip
popopdd [popop] dipd popopdd [popop] dipd
product 1 swap [*] step product 1 swap [*] step
quoted [unit] dip quoted [unit] dip
range [0 <=] [1 - dup] anamorphism range [0 <=] [1 - dup] anamorphism
range_to_zero unit [down_to_zero] infra range_to_zero unit [down_to_zero] infra
reco rest cons reco rest cons
rest uncons popd
reverse <{} shunt reverse <{} shunt
roll> swap swapd roll> swap swapd
roll< swapd swap roll< swapd swap
rollup roll> rollup roll>
rolldown roll< rolldown roll<
rrest rest rest rrest rest rest
run <{} infra run <{} infra
second rest first
shift uncons [swons] dip shift uncons [swons] dip
shunt [swons] step shunt [swons] step
size [pop ++] step_zero size [pop ++] step_zero
@ -1214,32 +1270,31 @@ swapd ≡ [swap] dip
swons swap cons swons swap cons
swoncat swap concat swoncat swap concat
sqr dup mul sqr dup mul
tailrec [i] genrec
take <<{} [shift] times pop take <<{} [shift] times pop
ternary binary popd
third rest second
tuck dup swapd tuck dup swapd
unary nullary popd
uncons [first] [rest] cleave uncons [first] [rest] cleave
unit [] cons unit [] cons
unquoted [i] dip unquoted [i] dip
unswons uncons swap unswons uncons swap
while swap nulco dupdipd concat loop while swap nulco dupdipd concat loop
x dup i
step [_step0] x step [_step0] x
_step0 _step1 [popopop] [_stept] branch _step0 _step1 [popopop] [_stept] branch
_step1 [?] dipd roll< _step1 [?] dipd roll<
_stept [uncons] dipd [dupdipd] dip x _stept [uncons] dipd [dupdipd] dip x
times [_times0] x times [_times0] x
_times0 _times1 [popopop] [_timest] branch _times0 _times1 [popopop] [_timest] branch
_times1 [dup 0 >] dipd roll< _times1 [dup 0 >] dipd roll<
_timest [[--] dip dupdipd] dip x _timest [[--] dip dupdipd] dip x
map [_map0] cons [[] [_map?] [_mape]] dip tailrec map [_map0] cons [[] [_map?] [_mape]] dip tailrec
_map? pop bool not _map? pop bool not
_mape popd reverse _mape popd reverse
_map0 [_map1] dipd _map2 _map0 [_map1] dipd _map2
_map1 stackd shift _map1 stackd shift
_map2 [infrst] cons dipd roll< swons _map2 [infrst] cons dipd roll< swons
''' '''