Lodash fp (функциональное программирование) не работает, как я ожидаю, что он будет работать

Используя обычный lodash без fp, вы бы сделали что-то вроде

chain(array).map(..).reduce(...).value()

С fp вы бы сделали

compose(reduce(...), map(...))(array)

Я могу заставить его работать для многих методов (flatten, sort, map), кроме сокращения.

Вы ожидали бы этого ( уменьшите (( a , b ) => a + b , 0 ) ([ 1 , 2 , 3 ]) / уменьшите), чтобы работать как

func(...)(array)

Но для версии fp все еще требуются 3 аргумента, что для меня не имеет смысла. Все остальные функции работают для меня, за исключением сокращения

compose(reduce(...), map(...), flatten(...))(array)

Как я могу сделать fpreduce работу, как и другие функции fp таким образом:

lodash/fp

javascript,functional-programming,lodash,

1

Ответов: 1


2 принят

сокращение принимает 3 общих аргумента независимо от того, используется ли функциональный интерфейс. lodash/fpпросто изменяет порядок параметров и позволяет частично выполнять функции

const fp = require ('lodash/fp')

const sum = fp.reduce (fp.add, 0)

const sq = x => x * x

const main = fp.compose (sum, fp.map (sq))

console.log (main ([1,2,3,4]))
// => 30
// [1,2,3,4] => [1,4,9,16] => 0 + 1 + 4 + 9 + 16 => 30

Или как встроенный состав

fp.compose (fp.reduce (fp.add, 0), fp.map (x => x * x)) ([1,2,3,4])
// => 30
javascript, функциональное программирование, lodash,
Похожие вопросы