0
我在重寫使用更高階函數的方法時遇到了一些問題。這裏的嘗試(它編譯但不運行它工作正常):如何將列表減少爲單個選項值
fun lookup2 key hash =
List.foldr (fn ((k, v), r) => if k = key then SOME v else r) NONE hash;
背景:
的想法是,有像這樣的哈希,我查找了通過字符串鍵一個int選項:
- val h = [("a", 5), ("b", 4)];
- lookup "a" h;
val it = SOME 5 : int option
我寫了一個非常有效:
fun lookup _ nil = NONE
| lookup key ((k, v)::xs) = if k = key then SOME v else lookup key xs;
但是我想重寫它以幫助熟悉sml。我有一個鬼鬼祟祟的懷疑,我不很明白foldr
...
我的錯誤 - 我不小心用不同lookup2
覆蓋它。它按預期工作。
@AJcodez:嘿,我更喜歡使用函數組合運算符('o')的版本!但我不得不承認這一點可能會更清楚。 – pyon
啊對不起,我沒有認出它,複製/粘貼在我的機器上不起作用。隨意將它改回:) – AJcodez
@AJcodez:沒關係,沒關係! – pyon