[Message de service] cet article a été transféré vers mon wiki :
https://code.nothus.fr/doku.php?id=s...uete-recursive
(màj possible)
Pour ce pense-bête, penchons-nous tout d'abord dans un nouveau projet :
... en pensant à ajouter dans le fichier toml de ce projet :
Code : Sélectionner tout - Visualiser dans une fenêtre à part cargo new projet
... et éditer le fichier (préalablement créé) lib.rs dans le dossier ./src :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 [lib] name = "projet" crate-type = ["dylib"]
Code rust : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 use std::ffi::CString; use std::ffi::CStr; use std::os::raw::c_char;
Bonjour à tous,
Edit du 29/11/2019 : ajout à la fin de l'article, de l'amélioration de la fonction de "letters".
La version présentée ci-dessous permet de parser du LISP (grammaire standard) et renvoie le résultat (une structure dont un arbre plat des atomes génériques trouvés) vers la sortie standard :
- un atome qui soit au moins un symbole, un nombre, ou un mélange des deux ;
- un atome de texte avec la compréhension de l'échappement du
Ici une matrice finale de 4x4 depuis un vecteur de 16 éléments. Deux solutions différentes :
- une imbrication de boucles, permettant d'avoir un accès aux deux dimensions de la matrice avec une variable locale incrémentée (pas de 1) ;
- une seule boucle, dont on applique au numéro de l'itération une division euclidienne (quotient et reste forment les deux dimensions de la matrice).
nb : la même matrice est réutilisée, ce qui ne serait probablement pas le cas dans
Ne trouvant mon bonheur, j'ai testé quelques combinaisons pour me rapprocher des coroutines... Il ne s'agit pas réellement de coroutines, car il n'y a pas suspension de l'exécution d'une fonction. La lambda utilisée ici comme un itérateur (closure), peut recevoir des arguments lors de l'appel (ce n'est pas le cas dans mon exemple). Ainsi vous pouvez facilement émettre et recevoir à chaque appel des valeurs.
Code lisp : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 (define-condition coroutine-terminee (error) ( (message :initarg