Spec-Zone.ru › GNU Make

Преобразование типов Guile

В make существует только один «тип данных» — строка. GNU Guile, с другой стороны, предоставляет богатый набор различных типов данных. Важным аспектом интерфейса между make и GNU Guile является преобразование типов данных Guile в make строки.

Это преобразование актуально в двух случаях: когда makefile вызывает функцию guile для вычисления выражения Guile, результат этого вычисления должен быть преобразован в строку make, чтобы его можно было дополнительно обработать make. Во-вторых, когда скрипт Guile вызывает одну из процедур, экспортированных make, переданный аргумент должен быть преобразован в строку.

Преобразование типов Guile в make строки выполняется следующим образом:

#f

Ложь преобразуется в пустую строку: в make условных операторах пустая строка рассматривается как ложь.

#t

Истина преобразуется в строку ‘#t’: в make условных операторах любая непустая строка рассматривается как истина.

symbol
number

Символ или число преобразуются в строковое представление этого символа или числа.

character

Печатаемый символ преобразуется в тот же символ.

string

Строка, содержащая только печатаемые символы, преобразуется в ту же самую строку.

list

Список преобразуется рекурсивно в соответствии с вышеуказанными правилами. Это означает, что любой структурированный список будет сглажен (то есть результат ‘'(a b (c d) e)’ будет преобразован в make строку ‘a b c d e’).

other

Любой другой тип Guile приводит к ошибке. В будущих версиях make, другие типы Guile могут быть преобразованы.

Преобразование ‘#f’ (в пустую строку) и ‘#t’ (в непустую строку ‘#t’) разработано для того, чтобы вы могли использовать результаты булевых выражений Guile непосредственно в качестве make булевых условий. Например:

$(if $(guile (access? "myfile" R_OK)),$(info myfile exists))

Вследствие этих правил преобразования вы должны учитывать результат вашего скрипта Guile, так как этот результат будет преобразован в строку и обработан make. Если для скрипта нет естественного результата (то есть, скрипт существует только для побочных эффектов), вы должны добавить ‘#f’ в качестве конечного выражения, чтобы избежать синтаксических ошибок в вашем makefile.

Copyright © 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 Free Software Foundation, Inc.
Licensed under the GNU Free Documentation License.
https://www.gnu.org/software/make/manual/html_node/Guile-Types.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API