当前位置:  开发笔记 > 编程语言 > 正文

OCaml地图上的元组

如何解决《OCaml地图上的元组》经验,为你挑选了2个好方法。

我的代码中有几个地方看起来像这样:

let (a,b,c) = (f "a", f "b", f "c")

如果我能写下这样的话会很好:

let (a,b,c) = map f ("a", "b", "c")

如果有办法在OCaml中做这样的事情?



1> Jeffrey Scof..:

最好的答案是,如果你想让它适用于不同大小的元组,你就不能这样做.每个元组大小在OCaml中是不同的类型.所以没有OCaml类型代表"任何大小的元素是字符串的元组"的想法.

但事实上,这听起来像一个列表而不是一个元组.如果可以使用列表而不是元组,则可以使用普通旧List.map函数.



2> gsg..:

您可以轻松编写map一种元素的三元组:

let map_triple f (a, b, c) = (f a, f b, f c)

let a, b, c = map_triple String.length ("foo", "bar", "quux")

但是,它只适用于一个元组长度.

有可能编写一个GADTified元组类型,并map在元组长度上写一个多态的类型,但除非优势很大,否则最好避免使用这种技巧,这似乎不是这里的情况.

推荐阅读
云聪京初瑞子_617
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有