Résultat: flux linéaire comme getFile(filename).map(parseJson).map(doOtherThings)...
Comment implémenter un flux linéaire avec IO et Soit des foncteurs en programmation fonctionnelle avec javascript?
Lorsque j'utilise Either
lui-même, tout est agréable et facile
function doSomethingCrazyHere(){
return "something crazy";
}
function safeUnsureFunction(){
try{
return Right(doSomethingCrazyHere());
}catch(e){
return Left(e);
}
}
alors je peux juste faire le problème
safeUnsureFunction().map((result)=>{
// result is just result from doSomethingCrazyHere function
// everything is linear now - I can map all along
return result;
})
.map()
.map()
.map()
.map();
// linear flow
suivant est quand je m en utilisant IO comme:
function safeReadFile(){
try{
return Right(fs.readFileSync(someFile,'utf-8'));
}catch(e){
return Left(error);
}
}
let pure=IO.from(safeReadFile).map((result)=>{
// result is now Either
// so when I want to be linear I must stay here
// code from now on is not linear and I must generate here another chain
return result.map(IdontWant).map(ToGo).map(ThisWay).map(ToTheRightSideOfTheScreen);
})
.map((result)=>{
return result.map(This).map(Is).map(Wrong).map(Way);
})
.map(IwantToBeLienearAgain)
.map(AndDoSomeWorkHere)
.map(ButMapFromIOreturnsIOallOverAgain);
let unpure=function(){
return pure.run();
}
IO est-ce pour séparer les fonctions pures des fonctions pas si pures?
Donc, je veux séparer le fichier non lu avec aussi Soit la gestion des erreurs de fichier. Est-ce possible? Comment avoir un flux linéaire lors de l'utilisation de Métamorphoses dans les monades IO?
Y a-t-il des modèles de programmation fonctionnelle pour cela?
readFile(filename).map(JSON.parse).map(doSomethingElse)....
pourrait avoir un coup d'oeil ici https://github.com/fantasyland/fantasy-land –