Hash :
c8eaffa1
Author :
Thomas de Grivel
Date :
2025-05-19T13:18:30
translate using ChatGPT
Le type KC3 Quote permet de créer des citations de code, pour repousser
l’évaluation d’un niveau, et qui peuvent être des citations partielles
en utilisant Unquote pour rapprocher l’évaluation d’un niveau inversement.
La citation est nécessaire en métaprogrammation lorsqu’on souhaite
retourner une valeur citée qui ne sera pas évaluée mis à part que le
niveau de citation est réduit d’un niveau. Unquote est nécessaire
@ l’inverse pour ré-élever le niveau d’évaluation on peut ainsi passer
des arguments à l’intérieur d’une quote dans une macro par exemple.
ikc3> 1 + 1
2
ikc3> type(1 + 1)
U8
ikc3> quote 1 + 1
1 + 1
ikc3> type(quote 1 + 1)
Call
ikc3> quote quote 1 + 1
quote 1 + 1
ikc3> type(quote quote 1 + 1)
Quote
Avec unquote :
ikc3> m = macro (x) { quote 1 + unquote x }
macro(x) { quote 1 + unquote(x) }
ikc3> m(41)
42
Top : Documentation KC3
Précédent : 1.17 Ptr
Suivant : 1.19 Ratio
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
# 1.18 Quote
Le type KC3 `Quote` permet de créer des citations de code, pour repousser
l'évaluation d'un niveau, et qui peuvent être des citations partielles
en utilisant `Unquote` pour rapprocher l'évaluation d'un niveau inversement.
La citation est nécessaire en métaprogrammation lorsqu'on souhaite
retourner une valeur citée qui ne sera pas évaluée mis à part que le
niveau de citation est réduit d'un niveau. `Unquote` est nécessaire
@ l'inverse pour ré-élever le niveau d'évaluation on peut ainsi passer
des arguments à l'intérieur d'une quote dans une macro par exemple.
## 1.18.1 Exemples
```elixir
ikc3> 1 + 1
2
ikc3> type(1 + 1)
U8
ikc3> quote 1 + 1
1 + 1
ikc3> type(quote 1 + 1)
Call
ikc3> quote quote 1 + 1
quote 1 + 1
ikc3> type(quote quote 1 + 1)
Quote
```
Avec `unquote` :
```elixir
ikc3> m = macro (x) { quote 1 + unquote x }
macro(x) { quote 1 + unquote(x) }
ikc3> m(41)
42
```
---
Top : [Documentation KC3](../)
Précédent : [1.17 Ptr](1.17_Ptr)
Suivant : [1.19 Ratio](1.19_Ratio)