我想創建一個產生兩個輸出的函數。 請考慮下面的例子:返回兩個輸出的函數
我建立了兩個函數,給定一個整數列表,返回偶數位置的元素列表和奇數位置的元素。
let rec alternate1 lst =
match lst with
[] -> []
| [x] -> []
| x::y::xs -> y::(alternate1 xs)
let rec alternate2 lst =
match lst with
[] -> []
| [x] -> [x]
| x::y::xs -> x::(alternate2 xs)
這裏一切都很好。現在,問題:我想創建一個單個函數alternate
,它返回兩個具有簽名alternate: int list-> (int list * int list)
的列表。
let rec alternate lst =
match lst with
[] -> []
| [x] -> []
| [x::y] -> [y]
(*My attempts:*)
| x::y::xs -> ((y::alternate xs), (x::alternate xs))
| x::y::xs -> [(y::alternate xs); (x::alternate xs)]
| x::y::xs -> ((y::alternate xs) && (x::alternate xs))
到目前爲止,沒有解決方案的工作。我很確定這個問題甚至是愚蠢的,但我的reference並沒有幫助我解決這個問題。
爲什麼不返回這兩個列表的元組? –
這將是理想的,但我仍然沒有把它付諸實踐。 – Worice