我寫了這個F#函數來將列表分區到某個點,而不再進一步 - 就像takeWhile
和partition
之間的交叉。鏈接列表分區功能和反向結果
let partitionWhile c l =
let rec aux accl accr =
match accr with
| [] -> (accl, [])
| h::t ->
if c h then
aux (h::accl) t
else
(accl, accr)
aux [] l
唯一的問題是,「採取」項目被顛倒:
> partitionWhile ((>=) 5) [1..10];;
val it : int list * int list = ([5; 4; 3; 2; 1], [6; 7; 8; 9; 10])
不是訴諸調用rev
其他,有沒有辦法這個功能可以寫,將有第一個列表是按正確的順序?
感謝您的所有努力! –