假设我有这个记录:
type alias Rec = { a : Int }
例如,一个函数接受其中两个并将它们的整数相加。
f: Rec -> Rec -> Int
这可以使用记录访问器(即
f x y = x.a + y.a
)来实现,但是有没有办法使用模式匹配来提取两个整数?显然,这两个不起作用,因为它们会将两个不同的数字绑定(bind)到同一个变量:
f {a} {a} = a + a
f x y = case (x, y) of ({a}, {a}) -> a + a
最佳答案
当前的 Elm 语言中似乎没有这种方式。在 ML 和 Haskell 等其他函数式语言中,您可以在记录中编写模式,例如:
$ sml
Standard ML of New Jersey v110.74 [built: Sat Oct 6 00:59:36 2012]
- fun func {field=x} {field=y} = x+y ;
val func = fn : {field:int} -> {field:int} -> int
- func {field=123} {field=45} ;
val it = 168 : int
您不妨向 Elm 的开发人员提出功能请求 - 或在 community mailing list 中提问。至少。
附言经过快速搜索,我找到了这样一个proposal在 Elm 的记录字段上添加类似 ML 的模式匹配,但它似乎已被拒绝。:-(
关于functional-programming - 具有相同字段的两条记录的模式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38098933/