似乎我一遍又一遍地使用我想抽象为函数的模式。模式背后的想法是,也许我有一些东西,如果没有,我可以尝试生产它。这是我有兴趣命名的函数的一些 OCaml 代码,但问题不是 OCaml 特定的。我寻找了 Haskell 的先例,但我没有在 Data.Maybe 模块中看到这样的功能,而 hoogle 没有帮助:http ://www.haskell.org/hoogle/?hoogle=Maybe+b+-%3E+% 28a+-%3E+也许+b%29+-%3E+a+-%3E+也许+b。
let my_function a f arg = match a with
| None -> f arg
| Some _ -> a
这几乎就像有一个默认的潜在值,但如果我们已经有一个值,它就不需要生成默认值。
编辑:
我需要这种类型的原因是我要解决一个组合问题和一组启发式方法来解决它(比如 h1 和 h2)。h1 比 h2 快。但是,这些启发式方法都不能保证找到解决方案。所以我把它们串起来并按顺序尝试。就像是
match my_function (h1 problem) h2 problem with
| None -> "bad luck"
| Some solution -> "hurray"