liquidhaskell-0.8.10.1: tests/pos/Chunks.hs
module Chunks where
{-@ LIQUID "--scrape-imports" @-}
{-@ type SafeChunkSize = {v:Int | 1 < v } @-}
{-@ type Pos = {v:Int | 0 < v} @-}
{-@ predicate ValidChunk V XS N
= if len XS == 0
then (len V == 0)
else (((1 < len XS && 1 < N) => (len V < len XS))
&& ((len XS <= N ) => len V == 1))
@-}
{-@ chunks :: n:Pos -> xs:[a] -> {v:[[a]] | ValidChunk v xs n } / [len xs] @-}
chunks :: Int -> [a] -> [[a]]
chunks _ [] = []
chunks n xs = let (x, xs') = splitAt n xs in x:chunks n xs'