module Autolib.Util.Teilfolgen where

-- -- $Id$

teilfolgen :: Int -> [a] -> [[a]]
teilfolgen :: forall a. Int -> [a] -> [[a]]
teilfolgen Int
k [a]
xs | Int
k Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
> [a] -> Int
forall a. [a] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
length [a]
xs = []
teilfolgen Int
0 [a]
xs = [[]]
teilfolgen Int
k (a
x : [a]
xs) 
    =  Int -> [a] -> [[a]]
forall a. Int -> [a] -> [[a]]
teilfolgen Int
k [a]
xs
    [[a]] -> [[a]] -> [[a]]
forall a. [a] -> [a] -> [a]
++ do ys <- Int -> [a] -> [[a]]
forall a. Int -> [a] -> [[a]]
teilfolgen (Int
kInt -> Int -> Int
forall a. Num a => a -> a -> a
-Int
1) [a]
xs ; return $ x : ys