схема гамбита - импорт функций из другого файла в текущую область - PullRequest
0 голосов
/ 08 февраля 2020

У меня есть функция run в файле run.scm. Я хочу сделать run доступным в test.scm. Как бы я go сделал это в схеме Gambit?

Я уже пробовал (import "run.scm"), но он только что пожаловался на то, что import является несвязанной переменной.

1 Ответ

2 голосов
/ 11 февраля 2020

Схема Gambit использует include, а не import.

Схема Gambit не поставляется с модулями в стандартной комплектации, для модулей, которые, как вы, похоже, описываете, вам придется использовать Черная дыра , который является расширением Gambit и должен быть установлен и загружен отдельно, или Схема Gerbil , которая построена на гамбите (я думаю, это почти так же быстро, хотя я никогда не использовал его). Другая схема, основанная на Gambit Scheme с модулями: LambdaNative , которая имеет уникальную «внешнюю» систему модулей и предназначена в основном для написания мобильных приложений.

То же самое с файлами run.scm и test.scm в той же папке .......

run.scm

(define (run .  args)
  (if (not (null? args)) 
      ( println args) 
      ( println "no args")))

test.scm

(include "run.scm")

(define (test-run . args)
  (if (not (null? args))
      (run args )   
      (println "run not tested")))

затем от переводчика ( gsi )

>(load "test.scm")

>(test-run 1 2 3)  ; output  -> 123

>(run)  ; output  -> no args

>(test-run) ; output ->  run not tested
...