IFT359 – Programmation fonctionnelle exercice backquote, unquote, unquote-splicing 1.

Slides:



Advertisements
Présentations similaires
Sensibilisation à l’Algorithmique
Advertisements

Sensibilisation à l’Algorithmique et structure de données
CSI3525: Concepts des Langages de Programmation Notes # 5: Langages de Programmation Fonctionelle I: Introduction au Scheme.
Un langage de programmation fonctionnelle
Programmation fonctionnelle Le langage LISP
TD4 2 IMACS Romaric GUILLERM Algo-Prog en Ada.
Algo-Prog en Ada TD1 2 MIC Romaric GUILLERM
CSI2520  cdr vers le bas, cons vers le haut (define (traite-liste L) (if (null? L) () (cons (traite (car L)) (traite-liste (cdr L)))))
CSI2520  Cette fonction permet d’attribuer une valeur à une variable (set! nombre (+ 3 4)) (set! nombre (+ 1 nombre)) En SCHEME, les fonctions dont le.
Développer puis réduire
Objets Opérateurs Listes
CSI2520 (map abs ‘( )) ( ) (map (lambda (x y) (* x y)) ‘( ) ‘( )) ( )  Permet d’appliquer une fonction aux.
Écrire des fonctions, max et min, qui calculent le maximum, et le minimum de deux éléments x et y. Exercice 1. max (min) : fonction qui prend deux valeurs,
IFT359 – Programmation fonctionnelle Thème #6 Appel terminaux 1.
IFT359 – Programmation fonctionnelle Thème 07 Fermeture, affectation ou monades 1.
IFT359 – Programmation fonctionnelle Thème #8 Création de nouvelles formes syntaxiques 1.
IFT359 – Programmation fonctionnelle Thème #10 Évaluation par environnement et évaluateur méta-circulaire 1.
IDENTITÉS REMARQUABLES
IFT359 – Programmation fonctionnelle Thème 02 B partie A introduction au langage fonctionnel choisi 1.
1 Programmation en C++ C++ de base ● Programme C++ ● Variables, objets, types ● Fonctions ● Namespace ● Tests ● Boucles ● Pointeurs, références.
SYSTEM PROGRAM.
Les tableaux différencier les variables simples des variables indicées (ordonnées et numérotées) un identificateur unique désigne un ensemble, une collection.
Pierre Joli Cours de Mathématique Pierre Joli
Daniel Turp Professeur titulaire
Techniques de décomposition
Semaine #1 INF130 par Frédérick Henri.
Disposition de titre Sous-titre.
Disposition du titre Sous-titre.
11ième Classe (Mardi, 18 novembre) CSI2572
Les expressions régulières en javascript
203-NYB Chapitre 8: Solutions à certains exercices
Disposition du titre Sous-titre.
Chapitre 2: Les équations et les inéquations polynômes
Langages de programmation TP3
Week 1 Lecture 1 Introduction à R L3PRO 2017.
Programmation en C++ C++ de base
Dérivation et intégration
Calcul Scientifique Initiation à SCILB
La Théorie Particulaire
I.1. Définition et composition d’une solution  La dissolution d’une espèce chimique (appelé soluté) dans un grand volume de liquide (appelé solvant) donne.
2 Copyright © 2004, Oracle. Tous droits réservés. Restreindre et trier les données.
6 Copyright © 2004, Oracle. Tous droits réservés. Utiliser des sous-interrogations pour résoudre des interrogations.
Programmation. Définition programmation
Question 1 Calculer 5% de 70 euros..
Semaine #3 INF130 par Frédérick Henri.
Cité scolaire Gambetta
Exercice 1 : Quelles fonctions définies sur R sont affines ? linéaires ? 1°) f(x) = ( 5x – 3 ) / √2 2°) g(x) = x + 3 3°) h(x) = °)
Exercice : Soient les fonctions définies sur N ( ensemble des entiers naturels donc positifs ) par : f(x) = - 2x + 6 ; g(x) = x + 1 ; k(x) = la plus.
Disposition du titre Sous-titre.
Disposition du titre Sous-titre.
Disposition du titre Sous-titre.
Disposition du titre Sous-titre.
L’ÉCOLOGIE * Définition de l’écologie * Définition de l’écosystème * C’est quoi la biocénose et le biotope ? * La relation entre la biocénose et le biotope.
Disposition de titre avec image
Disposition du titre Sous-titre.
Disposition du titre Sous-titre.
Disposition Titre avec images
Principes de programmation (suite)
Piles et files.
Programmation Scratch
Disposition du titre Sous-titre.
Disposition du titre Sous-titre.
Disposition du titre sous-titre.
Disposition du titre Sous-titre.
Disposition du titre Sous-titre.
Chaîne d'information & Chaîne d'énergie
Disposition du titre Sous-titre.
Disposition du titre Sous-titre.
PROGRAMMATION SOUS R. PRESENTE PAR : ACHETTOU ISMAIL LAARICH TARIQ ENCADRE PAR : Pr. EXPOSÉ SUR LA PROGRAMMATION SUR R 2.
Systèmes d ’Information
Transcription de la présentation:

IFT359 – Programmation fonctionnelle exercice backquote, unquote, unquote-splicing 1

Interpolation de listes quasiquote « ` » est aux listes ce que format est aux string quasiquote suspend l’évaluation comme quote, sauf qu’il peut contenir : –unquote «, » qui force l’évaluation –unquote-splicing » qui 1.force l’évaluation d’une expression –(Cette expression rune liste) 2.insère les éléments directement (i.e. sans les parenthèses)

Équivalence entre list/append/' et `x = 'x `,x = x `(x) = (list 'x) `(,x) = (list x) `(x,x) = (list 'x x) = (append x) = (append (list 'x) (list x) x)

Exemples Soit (define a 1) (define b 2) (define c 3) (define l '(x y z)) (let ([v 'x]) `(λ (,v) (*,v,v)))  (λ (x) (* x x)) `(a b,c)  (a b 4) c)  (a x y z c) ((λ (x) `(,x ',x)) '(λ (x) `(,x ',x)))  exercice '((λ (x) `(,x ',x)) '(λ (x) `(,x ',x)))

Exercice avec backquote 5 Définir combine, la procédure tail-recursive qui combine deux listes triées, et où deux éléments peuvent être égaux sans être identiques. Votre définition doit utiliser les notions que nous venons de voir. Pour simplifier le problème considérer que l’opérateur d’égalité est = et que celui de plus petit est < solution à la prochaine diapositive.

Exercice avec backquote 6 (define (combine ls1 ls2) (letrec ([iter (λ (acc liste1 liste2) (cond ((null? liste1) ((null? liste2) ((= (car liste1) (car liste2)) (iter liste1),(car liste2)) (cdr liste1) (cdr liste2))) ((< (car liste1) (car liste2)) (iter liste1)) (cdr liste1) liste2)) (else (iter liste2)) liste1 (cdr liste2)))))]) (iter null ls1 ls2)))

Exercice avec backquote 7 Définir ( permuter_m_n m n ls), la procédure tail-recursive qui permute les éléments m et n d’une liste. Votre définition doit utiliser les notions que nous venons de voir. (permuter 1 4 '(a b c d e f g))  '(a e c d b f g) solution sur la prochaine diapositive

Exercice avec backquote 8 Définir ( permuter_m_n m n ls) (define (permuter m n ls) (letrec ([iter (λ (reste acc1 acc2 m n) (cond ((>= m 0) (iter (cdr reste) (cons (car reste) acc1) acc2 (- m 1) (- n 1))) ((>= n 0) (iter (cdr reste) acc1 (cons (car reste) acc2) m (- n 1))) (else (cdr acc1)),(car (cdr acc2)),(car (iter ls null null m n)))