我有以下形式的功能使用模式OCaml中或F#匹配一个变量
'a -> ('a * int) list -> int
let rec getValue identifier bindings =
match bindings with
| (identifier, value)::tail -> value
| (_, _)::tail -> getValue identifier tail
| [] -> -1
我可以告诉大家,identifier
不被束缚我会把它喜欢的方式,并作为一个新的变量在匹配表达式内。如何获得identifier
是传递给函数的内容?
好的!我用一个模式卫士固定它,即| (i, value)::tail when i = indentifier -> value
但我觉得这比我原本想做它的方式更丑陋(我只使用这些语言,因为它们很漂亮......)。有什么想法吗?
您的原始方法让我想起了Prolog的统一性,它比功能性更具说明性。 – ron 2010-03-08 22:59:30