在 OCaml 中混合模式匹配和柯里化
在 SML 中,使用柯里化和模式匹配来定义函数是常见且容易的。这是一个简单的例子:
fun zip [] _ = []
| zip _ [] = []
| zip (x::xs) (y::ys) = (x,y)::(zip xs ys)
忽略库函数,将其移植到 OCaml 的最佳方法是什么?据我所知,没有简单的方法可以同时使用柯里化和模式匹配来声明函数。
In SML, it's common and easy to define a function using both currying and pattern matching. Here's a simple example:
fun zip [] _ = []
| zip _ [] = []
| zip (x::xs) (y::ys) = (x,y)::(zip xs ys)
Ignoring library functions, what's the best way to port this to OCaml? As far as I can tell, there is no easy way to declare a function using both currying and pattern matching.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我想说最好只使用匹配表达式。
如果您决定不使用匹配,这有点复杂,但您可以这样做。
I would say it's best to just use a match expression.
If you're set on not using match, it's a bit convoluted, but you can do this.