Ответ 1
Поскольку вы спрашивали о стандартных функциях, no. Но также нет пакета, содержащего takeWhileInclusive
, но это очень просто:
takeWhileInclusive :: (a -> Bool) -> [a] -> [a]
takeWhileInclusive _ [] = []
takeWhileInclusive p (x:xs) = x : if p x then takeWhileInclusive p xs
else []
Единственное, что вам нужно сделать, - принять значение независимо от того, вернет ли предикат True и использовать предикат в качестве фактора продолжения:
*Main> takeWhileInclusive (\x -> x /= 20) [10..]
[10,11,12,13,14,15,16,17,18,19,20]