argfunction.sh 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. .echo $nl $nl $nl $nl
  2. .function fw .{argfunction} {
  3. .function f1 name .{argfunction} {.argfunction}
  4. .whence_function f1; .echo $nl
  5. f1 f2 {.argfunction}
  6. .whence_function f2; .echo $nl
  7. .rm_executable f1; .rm_executable f2}
  8. fw {.echo hi $nl; .function $name .{argfunction} {.argfunction}}
  9. fw {.while .throw .false {
  10. .function &&name .{argfunction} {.argfunction}}}
  11. .function f1 name .{argfunction} {
  12. .echo function name $name $nl
  13. .whence_function .argfunction {.argfunction}
  14. .echo $nl end of function body $nl}
  15. f1 f2 {
  16. .echo noname $1 $nl
  17. .whence_function .argfunction {.argfunction}
  18. .echo $nl end of nothing $nl}
  19. fw {
  20. .echo function name $name $nl
  21. .whence_function .argfunction {.argfunction}
  22. .echo $nl end of function body $nl}
  23. fw {forj 1 2 3 {
  24. .echo function name $j $name $nl
  25. .whence_function .argfunction {.argfunction}
  26. .echo $nl end of function body $nl}}
  27. fw {forj 1 2 3 {.mapped_argfunction $j {
  28. .echo function name &&name $nl
  29. .whence_function .argfunction {.argfunction}
  30. .echo $nl end of function body $nl}}}
  31. # all of the above make sense, and the next should be identical to the last
  32. fw {.mapped_argfunction $1 {forj 1 2 3 {.nop $j
  33. .echo function name &&name $nl
  34. .whence_function .argfunction {.argfunction}
  35. .echo $nl end of function body $nl}}}
  36. # mostly as wierd
  37. fw {.mapped_argfunction .not_a_number {
  38. .echo function name &&name $nl
  39. .whence_function .argfunction {.argfunction}
  40. .echo $nl end of function body $nl}}
  41. # normal again
  42. fw {.try_catch_recursive .not_a_number {
  43. .echo function name &&name $nl
  44. .whence_function .argfunction {.argfunction}
  45. .echo $nl end of function body $nl}}
  46. fw {forj 1 2 3 {.try_catch_recursive .not_a_number {
  47. .nop $j
  48. .echo function name &&name $nl
  49. .whence_function .argfunction {.argfunction}
  50. .echo $nl end of function body $nl}}}
  51. fw {.try_catch_recursive .not_a_number {forj 1 2 3 {.nop $j
  52. .echo function name &&name $nl
  53. .whence_function .argfunction {.argfunction}
  54. .echo $nl end of function body $nl}}}
  55. # maybe weird?
  56. fw {.mapped_argfunction $1 {
  57. .echo function name &&name $nl
  58. .whence_function .argfunction {.argfunction}
  59. .echo $nl end of function body $nl}}
  60. # definitely weird
  61. fw {.mapped_argfunction $name {forj a b {.nop $j
  62. .echo function name &&name $nl
  63. .whence_function .argfunction {.argfunction}
  64. .echo $nl end of function body $nl}}}
  65. fw {.mapped_argfunction {
  66. .function $name .{argfunction} {.argfunction}}}
  67. .nop $A $FIGNORE
  68. .exit 0