Желаемый конечный машинописный код:
transform(input)(transformation1)(transformation2)(...
// input is any data, e.g. string or object
// transformationX should be a transforming function
Я уже написал код ниже, и мне кажется, что я изобрел колесо, то есть что-то подобное должно быть уже реализовано в FP, но я не знаю, как оно называется. Кто-нибудь может сказать, какой инструмент из https://gcanti.github.io/fp-ts/ можно использовать вместо него?
type Transformer = (transformation: Transformation) => Transformer
type Transformation = (input: object) => Transformer
const TranformerCreator = (input: object): Transformer
=> (transformation: Transformation): Transformer
=> transformation(input)
const transform: Transformation = (input: object) => {
return TranformerCreator(input)
}
const transformation1: Transformation = (input: object) => {
// do sometging with input
return TranformerCreator(input)
}