Così ho iniziato a guardare Ramda/Folktale. Sto riscontrando un problema nel tentativo di mappare su una serie di attività provenienti da una directory. Sto cercando di analizzare il contenuto del file.Mapping su una serie di attività in Javascript
var fs = require('fs');
var util = require('util');
var R = require('ramda');
var Task = require('data.task');
var compose = R.compose;
var map = R.map;
var chain = R.chain;
function parseFile(data) {
console.log("Name: " + data.match(/\$name:(.*)/)[1]);
console.log("Description: " + data.match(/\$description:(.*)/)[1]);
console.log("Example path: " + data.match(/\$example:(.*)/)[1]);
}
// String => Task [String]
function readDirectories(path) {
return new Task(function(reject, resolve) {
fs.readdir(path, function(err, files) {
err ? reject(err) : resolve(files);
})
})
}
// String => Task String
function readFile(file) {
return new Task(function(reject, resolve) {
fs.readFile('./src/less/' + file, 'utf8', function(err, data) {
err ? reject(err) : resolve(data);
})
})
}
var app = compose(chain(readFile), readDirectories);
app('./src/less').fork(
function(error) { throw error },
function(data) { util.log(data) }
);
Sto leggendo i file in una directory e restituendo un'attività. Quando questo si risolve dovrebbe andare nella funzione readFile (che restituisce una nuova attività). Una volta letto il file, voglio solo analizzare alcuni bit da lì.
Con la seguente:
var app = compose(chain(readFile), readDirectories);
Si entra nella funzione ReadFile ma 'file' è un array di file in modo che gli errori.
Con:
var app = compose(chain(map(readFile)), readDirectories);
Non abbiamo mai entrare in fs.readfile(), ma 'file' è il nome del file vero e proprio.
Sono abbastanza perplesso su questo e la documentazione è sconcertante. Qualsiasi suggerimento benvenuto.
Grazie
Grazie. Questo è davvero molto interessante. È un tale cambiamento nel pensare di averlo fatto. Torna al libro di Dr Boolean. – SpaceBeers
Non riesco a trovare permuti nella documentazione di ramda. Cosa mi manca? – akaphenom
anche (dato che non riesco a trovare la documentazione) in che modo la commutazione è diversa dalla funzione di sequenza "control.monads"? – akaphenom