Node:Простейший вызов,
Next:Создание процедуры,
Previous:Процедуры в качестве значений,
Up:О процедурах
[Показать/скрыть оригинал] [Показать/скрыть перевод] [Переключить перевод и оригинал]
A procedure invocation in Scheme is written like this:
Вызов процедуры в Scheme выглядит так:
(procedure [arg1 [arg2 ...]])
In this expression, procedure can be any Scheme expression whose value is a procedure. Most commonly, however, procedure is simply the name of a variable whose value is a procedure.
В этом выражении procedure может быть любым выражением Scheme, значением которого является процедура. Обычно, на самом деле, procedure это просто имя переменной, значение которой является процедурой.
For example, string-append is a standard Scheme procedure whose
behaviour is to concatenate together all the arguments, which are
expected to be strings, that it is given. So the expression
Например, string-append - это стандартная процедура Scheme,
которая объединяет все переданные ей аргументы (ожидается, что все они будут строками). Так
что выражение
(string-append "/home" "/" "andrew")
is a procedure invocation whose result is the string value
"/home/andrew".
это вызов процедуры, в результате которого мы получаем строкове значение
"/home/andrew"
Similarly, string-length is a standard Scheme procedure that
returns the length of a single string argument, so
Аналогично, string-length это стандартная процедура в Scheme,
которая возвращает длину строки. Она принимает одину строку, так что:
(string-length "abc")
is a procedure invocation whose result is the numeric value 3.
это вызов процедуры, возвращающей число 3.
Each of the parameters in a procedure invocation can itself be any Scheme expression. Since a procedure invocation is itself a type of expression, we can put these two examples together to get
Каждый из параметров вызова сам по себе может быть любым выражением
Scheme. Так как вызов процедуры это тоже выражение, мы можем объединить оба примера:
(string-length (string-append "/home" "/" "andrew"))
-- a procedure invocation whose result is the numeric value 12.
Результат вызова процедуры - число 12.
(You may be wondering what happens if the two examples are combined the other way round. If we do this, we can make a procedure invocation expression that is syntactically correct:
Любопытный читатель наверняка задался вопросом, а что будет, если
мы объединим эти два примера в другом порядке? Если мы сделаем так, мы получим корректное
с точки зрения синтаксиса выражение:
(string-append "/home" (string-length "abc"))
but when this expression is executed, it will cause an error, because
the result of (string-length "abc") is a numeric value, and
string-append is not designed to accept a numeric value as one of
its arguments.)
Однако, в момент исполнения это вызовет ошибку, так как (string-length "abc") возвращает число,
а string-append не предназначена для работы с числами.
> > далее > >