From d33d4c8eef5017ad4f1a37c32f07e4509e8d82ba Mon Sep 17 00:00:00 2001 From: ywsing Date: Thu, 22 Oct 2020 09:03:52 +0800 Subject: [PATCH] embed free function into list --- src/main/resources/suite/funp/iter.fp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/resources/suite/funp/iter.fp b/src/main/resources/suite/funp/iter.fp index 866a2b7a9c..8f3384b44d 100644 --- a/src/main/resources/suite/funp/iter.fp +++ b/src/main/resources/suite/funp/iter.fp @@ -2,6 +2,7 @@ expand max-size := 32 ~ expand type-elem := number ~ expand type-list := { + free! := () => do! () ~ elems := address-of (array max-size * type-elem) ~ size := number ~ } ~ @@ -33,6 +34,7 @@ define-global list-build! () := do let size_ := size* ~ delete! size ~ { + !free := () => capture1 do! (!delete-array^ elems ~ ()) ~ elems ~ size := size_ ~ } @@ -48,9 +50,9 @@ define-global list-free! list := do define-global list-iter! list := do type list = type-list ~ - let { elems ~ size ~ } := list ~ + let { free! := () => do! () ~ elems ~ size ~ } := list ~ let i := new! 0 ~ - let has-next := () => capture (i* < size) ~ + let has.next := () => capture (i* < size) ~ let next! := () => capture do let i_ := i* ~ assign! i* := i_ + 1 ~