Functional programming 如何中断、退出组合或管道?

Functional programming 如何中断、退出组合或管道?,functional-programming,ramda.js,Functional Programming,Ramda.js,中断一长串compose或pipe函数的正确方法是什么 假设该链不需要在第二个函数之后运行,因为它发现了一个无效值,并且只要用户提交的值无效,它就不需要继续接下来的5个函数 您是否返回一个未定义的/空的参数,因此其他函数只需检查是否没有返回值,在这种情况下只需继续传递空参数?我认为没有通用的方法来处理这个问题 通常,在使用时,会定义一些内容,以便您可以继续运行函数,即使您希望的数据不存在。这是类型的一个非常有用的特性,例如Maybe和other 但是大多数版本的compose或相关函数并没有为您

中断一长串compose或pipe函数的正确方法是什么

假设该链不需要在第二个函数之后运行,因为它发现了一个无效值,并且只要用户提交的值无效,它就不需要继续接下来的5个函数


您是否返回一个未定义的/空的参数,因此其他函数只需检查是否没有返回值,在这种情况下只需继续传递空参数?

我认为没有通用的方法来处理这个问题

通常,在使用时,会定义一些内容,以便您可以继续运行函数,即使您希望的数据不存在。这是类型的一个非常有用的特性,例如
Maybe
other


但是大多数版本的
compose
或相关函数并没有为您提供早期转义机制。Ramda's当然不会。

虽然技术上无法退出管道,但可以在管道中使用管道(),因此没有理由不能执行以下操作来“退出”(从管道返回或踢入另一管道):

pipe(
  // ... your pipeline 
  propOr(undefined, 'foo'), // - where your value is missing
  ifElse(isNil, always(undefined), pipe(
    // ...the rest of your pipeline
  ))
)