[bugfixes gergo@complang.tuwien.ac.at**20081209145451] { hunk ./wam.fs 615 + ( addr ) + drop hunk ./wam.fs 619 + ( addr ) + drop hunk ./wam.fs 683 - dereference - vn ! + vn dereference vn ! hunk ./wam.fs 821 + \ default: can't happen + abort hunk ./wam.fs 834 - C2a try_me_else \ concatenate( - C1 pl-execute ; -' C1a-def is C1a + C2a @ try_me_else \ concatenate( + C1 @ pl-execute ; +' C1a-def C1a ! hunk ./wam.fs 842 -' C1-def is C1 +' C1-def C1 ! hunk ./wam.fs 846 - C2 pl-execute ; -' C2a-def is C2a + C2 @ pl-execute ; +' C2a-def C2a ! hunk ./wam.fs 857 -' C2-def is C2 +' C2-def C2 ! hunk ./wam.fs 860 - C1a C1 C2 fail switch_on_term - ( result ) - if + C1a @ C1 @ C2 @ fail switch_on_term + ; is concatenate + +: concatenate-shell + \ Set "tail call" flag. + -1 + \ Call the goal itself. + concatenate + \ Report success or failure. + prolog-success @ if hunk ./wam.fs 873 - endif ; is concatenate + endif ; hunk ./wam.fs 877 - \ ~~ hunk ./wam.fs 878 - \ ~~ hunk ./wam.fs 879 - \ ~~ hunk ./wam.fs 880 - ~~ hunk ./wam.fs 881 - ~~ hunk ./wam.fs 882 - ~~ hunk ./wam.fs 883 - ~~ hunk ./wam.fs 885 - ~~ hunk ./wam.fs 888 - \ ~~ hunk ./wam.fs 897 - ." calling code (unroll 1) for concatenate([a], [b], L)" cr - concat-code-1 - ." success: " prolog-success @ . cr + ." calling code for concatenate([a], [b], L)" cr + \ concat-code-1 + concatenate-shell hunk ./wam.fs 912 - ." calling code (unroll 1) for concatenate([a], [X], [a, b])" cr - concat-code-1 - ." success: " prolog-success @ . cr + ." calling code for concatenate([a], [X], [a, b])" cr + \ concat-code-1 + concatenate-shell hunk ./wam.fs 919 + -1 }