我使用OCaml中寫一個函數,整數的列表和一個int元素,並返回對的列表,其中每對中的第一個元素是INT元件和該對中的第二個元素是列表中的成員。例如,假設我有數字1和列表[10; 20; 30]作爲輸入。我喜歡函數返回[(1,10); (1,20); (1,30)]。我寫了下面的功能:配對的int與整數的列表OCaml中
let rec f (lst : int list) (elm : int) : (int*int) list =
match lst with
| [] -> failwith "empty list"
| [x] -> [(x, elm)];;
我收到以下錯誤:
Characters 59-120:
Warning 8: this pattern-matching is not exhaustive.
Here is an example of a value that is not matched:
_::_::_ val f : int list -> int -> (int * int) list = <fun>
我缺少什麼?
謝謝你,我如何才能在有一個以上的元素列表中的元素呢?我知道有像h :: t這樣的東西,但是我沒有成功地使用它。 – user1787222
@ user1787222一次只能獲取列表的頭元素。爲了獲得所有的元素,你需要使用遞歸,並且每次你把頭伸出來。 –
@ user1787222我更新了我的答案。如果您認爲它很好,請將我的答案標記爲正確 –