.
runIO, , IO Ramda Fantasy Apply fantasyland spec. (, renameDirect), IO , IO.
R.ap, ( IO) IO (a -> b) -> IO a -> IO -> b. , IO, , a b, IO, a, IO, b.
, R.zip, R.apply(renameDirect), , R.zipWith(renameDirect).
:
var R = require('ramda')
var IO = require('ramda-fantasy').IO
var fs = require('fs')
const safeReadDirSync = dir => IO(() => fs.readdirSync(dir));
const safeReadFileSync = file => IO(() => fs.readFileSync(file, 'utf-8'))
const renameDirect = (file, name) => console.log('Renaming file ' + file + ' to ' + name + '\n')
const filesIO = R.map(R.split('\n'), safeReadFileSync('filenames.txt'))
const testfilesDirIO = safeReadDirSync('./testfiles/')
const renameDirectIO = (files, names) =>
R.ap(R.map(R.zipWith(renameDirect), files), names)
renameDirectIO(testfilesDirIO, filesIO).runIO()
IO (a -> b) , R.map(R.zipWith(renameDirect), files), R.zipWith(renameDirect) , files. R.ap names, IO, - IO(() => R.zipWith(renameDirect, value.runIO(), names.runIO())
, R.map R.ap , R.lift > , , , Apply.
, :
const renameDirectIO = (files, names) =>
R.ap(R.map(R.zipWith(renameDirect), files), names)
:
const renameDirectIO = R.lift(R.zipWith(renameDirect))