Labmda-Function in Forth

0 views
Skip to first unread message

Sergey Karakovskiy

unread,
Jun 2, 2008, 2:42:58 PM6/2/08
to Forth On TOP @ AMCP, Michael Gasanenko
Hello Forth,

А вот как это реализовано для SPF.

\ Лямбда-конструкция.
\ Код под SPF
\ идея: SU.FORTH, от Piter Sovietov
\ Ruvim, 06.01.2000
\ 14.May.2007 добавлена установка LAST-NON для RECURSE (true-grue, ygrek)

REQUIRE AHEAD lib/include/tools.f

: LAMBDA{ ( -- )
\ время компиляции ( -- orig1 xt )
LAST-NON
POSTPONE AHEAD
HERE
DUP TO LAST-NON
; IMMEDIATE

: } ( -- xt )
\ время компиляции ( orig1 xt -- )
\ код внутри конструкции LAMBDA{ } не выполняется, возвращается xt на этот код.
>R
POSTPONE EXIT
POSTPONE THEN
R> POSTPONE LITERAL
TO LAST-NON
; IMMEDIATE


( код между LAMBDA{ ... } работает как в отдельном слове.
Поэтому без спец. дополнений доступа к локальным переменным не будет.
)

--
Best regards,
Sergey mailto:sergey.ka...@gmail.com

lambda.f
Reply all
Reply to author
Forward
0 new messages