48 lines
1.4 KiB
Markdown
48 lines
1.4 KiB
Markdown
up::[[langage de programmation]]
|
|
title::"surcouche de python plus fonctionnelle. Pratique pour tester des choses rapidement."
|
|
#informatique
|
|
|
|
---
|
|
Langage de programmation : surcouche de python plus fonctionnelle
|
|
|
|
# Exemples
|
|
|
|
## Fonctions Lambda
|
|
La syntaxe des fonctions lambda est améliorée
|
|
```python
|
|
lambda x: 4 * x # multiplication par 4
|
|
(x -> 4 * x) # même chose
|
|
```
|
|
|
|
|
|
## Composer des fonctions
|
|
|
|
### Composition simple
|
|
la fonction `square_plus_1` correspond à `x -> 1 + x**2`
|
|
```python
|
|
square = x -> x**2
|
|
plus_1 = x -> x+1
|
|
square_plus_1 = plus_1 .. square
|
|
```
|
|
La composition est faîte avec `..` et suit l'ordre mathématique de composition : $(f \circ g)(x) = f(g(x))$
|
|
|
|
### Application partielle de fonction
|
|
Cette fonction met au carré chacun de ses arguments
|
|
```python
|
|
square_all = list .. map$(x -> x**2)
|
|
```
|
|
|
|
### Chaîner des fonctions
|
|
|
|
Calcul de $\pi$ avec $\sum\limits_{k=1}^{n} \left(\frac{1}{k^{2}}\right) = \dfrac{\pi^{2}}{6}$, soit $\pi = \sqrt{ 6\times\sum\limits_{k=1}^{n} \left(\frac{1}{k^{2}}\right)}$
|
|
```python
|
|
range(1, n) |> map$(k -> 1/k**2) |> sum |> list |> print
|
|
```
|
|
- on utilise `|>` pour chaîner des fonctions
|
|
- on utilise `k -> 1/k**2` pour définir une fonction anonyme (`lambda k: 1/k**2)`
|
|
- on utilise l'application partielle de fonction pour intégrer dans la chaîne de fonctions
|
|
|
|
## Gestion des itérables
|
|
On peut utiliser l'opérateur `::` (cons) pour chaîner des itérables
|
|
|