我有以下形式的功能使用模式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