Blocos de Primeira Classe¶
O Prelude AdvPL também abstrai blocos de primeira classe em forma de funções de
primeira classe, utilizando uma sintaxe similar a OCaml
ou Livescript
.
Blocos são, por padrão, definidos em AdvPL como { |Param| Expression }
.
A única função dessa abstração é aplicar um syntactic sugar para
Fun ( Param ) -> Expression
.
Nota: Lambda ( Param ) -> Expression
também é válido.
Definição Formal¶
fun ::= Fun ( [ <ident> [, <ident> [, <ident> ] ] ] ) -> <expr>
lambda ::= Lambda ( [ <ident> [, <ident> [, <ident> ] ] ] ): <expr>
Exemplos¶
Vamos realizar alguns testes com operações simples:
1 2 3 4 5 6 7 8 | #include "prelude.ch"
Function TestBlocks()
Local bAdd := Fun ( X, Y ) -> X + Y
Local bToString := Lambda ( X ): Str( X )
Alert( Eval( bToString, Eval( bAdd, 10, 20 ) ) ) // => "30"
Return 0
|