tricu

An interpreted language for exploring Tree Calculus
Log | Files | Refs | README | LICENSE

reverse.scp (397B)


      1 !export reverse
      2 -- Reverse a list by delegating to the reusable fold and prepend workers.
      3 -- Input: list; state: (folder, prepender) descriptors. The folder receives
      4 -- this list with explicit (prepender, []) state. The work is tail-delegated:
      5 -- unlike `call`, `become` does not use folder's stored initial state.
      6 consumer reverse
      7   xs @ (folder, prepender) => become folder xs @ (prepender, [])