Experiment with putting logic vars on the stack.
This commit is contained in:
parent
222c472449
commit
2e1f598aa2
|
|
@ -28,6 +28,7 @@ def(grba,[[stack,popd],dip]).
|
|||
def(hypot,[[sqr],ii,+,sqrt]).
|
||||
def(ifte,[[nullary],dipd,swap,branch]).
|
||||
def(ii,[[dip],dupdip,i]).
|
||||
def(infer,[thunk,dup,rollup,infra]).
|
||||
def(infra,[swons,swaack,[i],dip,swaack]).
|
||||
def(infrst,[infra,first]).
|
||||
def(least_fraction,[dup,[gcd],infra,[div],concat,map]).
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@ grba == [stack popd] dip
|
|||
hypot == [sqr] ii + sqrt
|
||||
ifte == [nullary] dipd swap branch
|
||||
ii == [dip] dupdip i
|
||||
infer == thunk dup rollup infra
|
||||
infra == swons swaack [i] dip swaack
|
||||
infrst == infra first
|
||||
least_fraction == dup [gcd] infra [div] concat map
|
||||
|
|
|
|||
|
|
@ -100,8 +100,10 @@ format_joy([T]) --> format_term(T), !.
|
|||
format_joy([T|S]) --> format_term(T), " ", format_joy(S).
|
||||
format_joy([]) --> [].
|
||||
|
||||
format_term(N) --> {number(N), number_codes(N, Codes)}, Codes.
|
||||
format_term(A) --> { atom(A), atom_codes(A, Codes)}, Codes.
|
||||
format_term(N) --> {number(N), number_codes(N, Codes)}, Codes.
|
||||
format_term(A) --> { atom(A), atom_codes(A, Codes)}, Codes.
|
||||
format_term(V) --> { var(V), write_to_codes(Codes, V)}, Codes.
|
||||
format_term([A|As]) --> "[", format_joy([A|As]), "]".
|
||||
format_term(F) --> { write_to_codes(Codes, F)}, Codes.
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -91,6 +91,7 @@ func(clear, _ , []).
|
|||
func(first, [[X|_]|S], [X|S]).
|
||||
func(rest, [[_|X]|S], [X|S]).
|
||||
func(unit, [X|S], [[X]|S]).
|
||||
func(thunk, S , [X|S]).
|
||||
|
||||
func(rolldown, [A, B, C|S], [B, C, A|S]).
|
||||
func(dupd, [A, B|S], [A, B, B|S]).
|
||||
|
|
|
|||
Loading…
Reference in New Issue