alterator/alterator/interfaces/guile/woo.scm:78: (define (woo-get-option cmd option . default) (cond ((and (pair? cmd) (plistq option (cdr cmd))) => cdr) (else (if (pair? default) (car default) "")))) Предположим. что наш backend при вызове (woo "is_obraz_building" "/kopidel") возвращает: (("/kopidel" is_obraz_building #f)) Тогда (woo-get-option (woo "is_obraz_building" "/kopidel") 'is_obraz_building) вернёт пустую строку, хотя должен вернуть #f. То есть сейчас woo-get-option не может определить - отсутствует ли параметр в cmd или же он выставлен на #f.
А какой тип данных определён для is_obraz_building? Я уверен на 99%, что существует "официальный" способ вернуть bool из backend3. По-моему, для этого нужно определить тип параметра как "bool", а затем использовать функции write_true() и write_false() в коде. Но возможно, я это придумал :) Завтра перепроверю. Но и вы тоже поищите примеры по имеющемуся коду.
Был не прав. Нужно вызывать не (woo-get-option (woo "is_obraz_building" "/kopidel") 'is_obraz_building) а (woo-get-option (cond-car (woo "is_obraz_building" "/kopidel")) 'is_obraz_building) Пример. scheme@(guile-user) [3]> (woo-get-option '("/a" b #f) 'b) $3 = #f Смотрел по примеру woo-read-first, где cond-car сразу используется. :(