Форт-функции, подобные структурам

Я играю с Forth и пытаюсь понять, имеет ли он функциональную структуру. Я пытаюсь понять, что это происходит из опыта ООП.

Я видел, что у вас может быть что-то вроде:

: addition + . ;
4 2 addition 6 ok

Есть ли способ получить его, чтобы вы могли иметь такие переменные, как:

: addition ( a b )
a b + ;
4 2 addition . 6 ok

Чтобы я мог делать более сложные вещи с этим определением слова.


person Softey    schedule 03.03.2018    source источник
comment
Определение слова является структурой, подобной функции. Вы пытаетесь спросить, как обращаться к аргументам по имени? Это не так работает; это просто объекты в стеке, которые вызывающая сторона, как мы надеемся, поместит туда в порядке, требуемом определением слова.   -  person tripleee    schedule 03.03.2018
comment
Конечно, вы можете использовать переменные (по сути, глобальные), но это считается плохой практикой. forth.com/starting-forth/8-variables-constants-arrays   -  person tripleee    schedule 03.03.2018
comment
Gforth поддерживает локальные переменные: complang.tuwien .ac.at/forth/gforth/Docs-html/   -  person tripleee    schedule 03.03.2018


Ответы (1)


Обычный синтаксис для локальных переменных использует { и }. Ваши примеры станут:

: addition { a b -- } a b + ;

Вместо этого стандарт использует {: и :}.

http://forth-standard.org/standard/locals/bColon

person Lars Brinkhoff    schedule 03.03.2018