число->строка и связанные процедуры в сценариях схемы GIMP
Вопрос
Меня расстраивает преобразование строк в числа и чисел в строки в сценариях GIMP.Я использую GIMP 2.6.8 в Windows Vista.
Я понимаю, что внутренняя реализация схемы GIMP меняется в зависимости от версии, и я не могу точно определить документацию.Насколько я могу судить, схема GIMP является подмножеством TinyScheme и/или поддерживает стандартные процедуры R5RS.В любом случае, когда я хочу попробовать что-то новое, я обычно просто ищу примеры в каталоге упакованных скриптов, потому что это наверняка сработает, не так ли?
Например, файлgrid-system.scm поставляется с последней версией GIMP и имеет выражение:
(string-append (number->string obj) " ")
это именно то, чего я хочу.Однако, если я использую число->строку в своем собственном скрипте или даже ввожу его в консоль сценариев GIMP (именно так я обычно тестирую новые вещи, которые хочу сделать), он сообщает мне, что число->строка является несвязанной переменной:
> (number->string 3)
Error: eval: unbound variable: number->string
Другие стандартные процедуры, скажем, из R5RS, работают нормально:
> (string-append "frust" "rated")
"frustrated"
Так,
1) Есть ли какая-то скрытая документация для текущих сценариев GIMP Scheme, кроме чего-то радикального, например поиска исходного кода GIMP?
2) Могу ли я использовать консоль GIMP, чтобы вывести список всех определенных процедур, чтобы найти то, что мне нужно?
3) Кто-нибудь еще подтверждает, что число->строка не определена для текущей сборки Windows, хотя она присутствует в упакованных скриптах?Мои поиски в Интернете не выявили никаких связанных с этим проблем, и полное удаление всех версий GIMP, вплоть до последних, ставит меня в такую же передрягу.
Решение
Вы можете перепривязать переменные и функции стандартной библиотеки верхнего уровня Monkeypatch в Scheme, но я не думаю, что вы можете отменить привязку переменных верхнего уровня.Возможно, какой-то файл библиотеки загружается неправильно.
Моя TinyScheme в GIMP 2.6.8 на OS X отлично выполняет число->строку.
число->строка определена в файлеshare/gimp/2.0/scripts/script-fu.init как
(define (number->string n) (anyatom->string n number?))
так что вы можете просто запустить этот код, чтобы повторно привязать переменную.Или, может быть, вы могли бы перезагрузить script-fu.init