Skip to content

Commit 97a9afa

Browse files
authored
doc: T-Lam
1 parent 88f28f7 commit 97a9afa

File tree

1 file changed

+16
-3
lines changed

1 file changed

+16
-3
lines changed

README.md

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -280,19 +280,32 @@ Autrement dit, si l'on peut caster une classe $A$ vers une autre classe $B$, alo
280280

281281
Si l'on définit une méthode `mtype`prenant en paramètre le nom d'une méthode ($m$) et la classe/interface associée ($T_0$), et qui renvoie la liste des types de ses paramètres associée $\overline{U}$ son type de retour $T$,
282282
et si dans notre environnement, il existe une expression $e_0$, que l'on peut caster en $e_0'$ en l'annotatant du type $T_0$,
283-
et que les paramètres $\overline{e}$ de cette méthode $m$ peuvent être castés par $\overline{U}$ avec $\lambda$`-mark`, en produisant une nouvelle liste $\overline{e'}$ de paramètres,
283+
et que les paramètres $\overline{e}$ de cette méthode $m$ peuvent être castés par $\overline{U}$ avec $\lambda$`mark`, en produisant une nouvelle liste $\overline{e'}$ de paramètres,
284284
et que si dans notre environnement, cette nouvelle liste peut être associée à une nouvelle liste $\overline{e''}$ d'argument annotés par une liste de type $\overline{T}$, qui sont des sous-types de $\overline{U}$ ;
285285

286286
Alors, la méthode $m$ peut être appelée avec des paramètres castés si ces paramètres sont d'un type qui étend le type des paramètres d'origine
287-
(après que ces attributs aient été annotés pas $\lambda$`-mark`).
287+
(après que ces attributs aient été annotés pas $\lambda$`mark`).
288288

289289
##### `T-New`
290290

291-
Après que les attributs (de type $\overline{U}$) d'une classe ait été annotés par $\lambda$`-mark`,
291+
Après que les attributs (de type $\overline{U}$) d'une classe ait été annotés par $\lambda$`mark`,
292292
si l'on note que ces nouveaux attributs annotés peuvent être castés en un autre sous type ($\overline{T}$) ;
293293

294294
Alors, un constructeur peut être appelé avec des paramètres castés si ces paramètres sont d'un type qui étend le type des paramètres d'origine
295295

296+
##### `T-Lam` *Comment typer une $\lambda$-expression$*
297+
298+
Si l'on a pu caster une expression $e$ en une interface (i.e. associer $e$ à $e'$, par l'annotation d'une interface),
299+
et que l'interface en question n'est constituée que d'une seule méthode abstraite ;
300+
301+
Alors cette expression implémente une interface fonctionnelle.
302+
303+
Si une expression implémente une interface fonctionnelle,
304+
et que l'on peut y appliquer $\lambda$`mark` sur le corps de sa méthode, produisant ainsi une nouvelle expression $e''$,
305+
et que cette nouvelle expression peut être jugée en tant que sous type de l'expression $e'$ ;
306+
307+
Alors, l'expression $e$ est une $\lambda$-expression$
308+
296309
#### Règles de réduction
297310

298311
### FJ vs Java

0 commit comments

Comments
 (0)