Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

code style #55

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 22 additions & 25 deletions prog_fonctionnelle/curryfication/fr/CURRYFICATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ Après un test de notre côté, nous vous recommandons cependant Ramda, qui gèr
Prenons l'exemple d'une fonction qui a pour but de logger un message, en précisant la date et la nature de celui-ci ; appelons-la `log` :
```js
function log(level, date, message) {
return console.log(`[${level}] ${date.toUTCString()}: ${message}`);
return console.log(`[${level}] ${date.toUTCString()}: ${message}`);
}
```
Un usage normal serait sous cette forme :
Expand All @@ -46,13 +46,9 @@ log("INFO")(new Date())("Ceci est un message"); // "[WARN] Wed, 19 Aug 2020 16:5
```
Comme dit précédemment, nous pouvons nous servir de la curryfication pour appliquer une partial application et créer des modèles, comme par exemple :
```js
const logLevel = condition
? log("WARN")
: log("INFO");
const logLevel = condition ? log("WARN") : log("INFO");

const logMessage = _condition
? logLevel(new Date(0))
: logLevel(new Date());
const logMessage = condition ? logLevel(new Date(0)) : logLevel(new Date());

logMessage("Ceci est un message"); // Quatre possibilités différentes en fonction des conditions
```
Expand All @@ -67,11 +63,12 @@ Afin de profiter d'une fonction curryfiée, vous pouvez la curryfier dès sa dé
Ainsi, notre fonction `log` ci-dessus devient :
```js
function log(level) {
return function(date) {
return function(message) {
return console.log(`[${level}] ${date.toUTCString()}: ${message}`);
}
}
return function(date) {
return function(message) {
return console.log(`[${level}] ${date.toUTCString()}: ${message}`);

}
}
}
```

Expand All @@ -97,19 +94,19 @@ ramdaErrorNow("Ceci est un test avec Ramda"); // [ERROR] Wed, 19 Aug 2020 16:58:
Bien entendu, il reste possible de l'implémenter soi-même. Nous vous proposons ainsi cette implémentation, à prendre ou à laisser :
```js
function curry(fn) {
if (typeof fn !== "function") {
return () => fn;
}

return function curried(...args) {
if (args.length >= fn.length) {
return fn(...args);
}

return function (...curriedArgs) {
return curried(...args.concat(curriedArgs));
}
}
if (typeof fn !== "function") {
return () => fn;
}

return function curried(...args) {
if (args.length >= fn.length) {
return fn(...args);
}

return function (...curriedArgs) {
return curried(...args.concat(curriedArgs));
}
}
}
```
Bien entendu, à l'instar des deux bibliothèques précédemment citées, cette implémentation fonctionne de la même manière.
Expand Down