число-> строка и связанные процедуры в сценарии схемы GIMP - PullRequest
2 голосов
/ 21 марта 2010

Я разочарован преобразованием строки в число и числом в строку в сценариях 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, вплоть до последних, ставит меня в тупик.

1 Ответ

4 голосов
/ 21 марта 2010

Вы можете привязать переменные и стандартные функции библиотеки верхнего уровня 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?))

так что вы можете просто запустить этот код, чтобы перепривязать переменную. Или, может быть, вы могли бы перезагрузить скрипт-fu.init

...