Синтаксис лямбда-выражений
Лямбда-выражение имеет следующий синтаксис:
секция_параметров секция_типа ->
выражение
или
секция_параметров секция_типа ->
составной оператор
или
function
секция_параметров секция_типа ->
выражение
или
procedure
секция_параметров ->
составной оператор
Секция типа - либо пуста, либо имеет вид:
: тип
Секция параметров устроена следующим образом:
идентификатор
или
( список идентификаторов )
Список идентификаторов состоит из секций. Каждая секция содержит идентификаторы, перечисляемые через запятую, после которых может следовать : тип. Секции отделяются одна от другой символом "точка с запятой". Список идентификаторов не может состоять из одного идентификатора без указания типа.
В инициализаторах процедурных переменных вида
var имя: тип := лямбда-выражение
если лямбда-выражение не начинается с ключевого слова function или procedure, то в секции параметров допустимы только переменные без указания типа, перечисляемые через запятую; секция типа также должна быть пустой
Например:
x -> x+1
() -> 1
(x,y) -> x*y
(x,y: integer) -> x*y
(x,y: integer): integer -> x*y
(x: integer; y: integer) -> x*y
(x,y: integer) -> begin Result := x*y end
(x,y: integer) -> begin Result := x*y end
function -> 1
function (x,y) -> x*y
function (x,y: integer) -> x*y
function (x,y: integer): integer -> x*y
function (x,y: integer): integer -> begin Result := x*y end
procedure -> begin write(1); write(2) end
procedure (x: integer; s: string)-> begin write(x,s) end