Tag: haskell

函数式编程:如何继承一系列验证规则的上下文

我有一套用于验证的函数(规则),以上下文为参数,并返回“Okay”或“Error”。 基本上这些可能会返回一个Maybe (Haskell)/ Optional (Java)类型。 在下面,我想验证一个Fruit (上下文)的属性,并返回一个错误消息,如果验证失败,否则“好”/无。 注意:我更喜欢纯粹的功能风格和无状态/不可变的解决方案。 实际上这是一个卡塔。 对于我的实验,我使用Kotlin,但核心问题也适用于支持更高阶函数(如Java和Haskell)的任何语言。 你可以在这里找到完整源代码的链接,在最底部也是一样。 给定一个水果类的颜色和重量,再加上一些示例规则: data class Fruit(val color:String, val weight:Int) fun theFruitIsRed(fruit: Fruit) : Optional<String> = if (fruit.color == "red") Optional.empty() else Optional.of("Fruit not red") fun fruitNotTooHeavy(fruit: Fruit) : Optional<String> = if (fruit.weight < 500) Optional.empty() else Optional.of("Too heavy") 现在我想使用对各个函数的引用来链接规则评估,而不使用FruitRuleProcessor将上下文指定为参数。 处理规则失败时,不应该评估任何其他规则。 例如: fun checkRules(fruit:Fruit) { var res […]