[Haskell-beginners] How to tell haskell that 'a' is 'a' ?

Sylvain Henry sylvain at haskus.fr
Mon Nov 14 02:26:27 UTC 2016


Hi,

Use ScopedTypeVariables and forall:

{-# LANGUAGE ScopedTypeVariables #-}

skips :: forall a. [a] -> [[a]]
skips xs = go 1 [] where
    go :: Int -> [[a]] -> [[a]]
*   ...*

Sylvain

On 14/11/2016 03:15, Lai Boon Hui wrote:
> Hi all,
>
> skips :: [a] -> [[a]]
> skips xs = go 1 [] where
>   go :: Int -> [[a]] -> [[a]] *-- Compiles if i remove this line*
>   go n acc
>     | n > (length xs) = acc
>     | n == 1 = xs : (go (n+1) acc)
>     | n < 1 = []
>     | otherwise = (everyN n xs) : (go (n+1) acc)
>
> everyN :: Int -> [a] -> [a]
> everyN n xs =
>   case (drop (n-1) xs) of
>     y:ys -> y : (everyN n ys)
>     [] -> []
>
> How can i tell haskell compiler that a is the sub program if the same 
> as a in the main program?
>
>
> -- 
> Best Regards,
> Boon Hui
>
>
> _______________________________________________
> Beginners mailing list
> Beginners at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/beginners/attachments/20161114/1aa88100/attachment.html>


More information about the Beginners mailing list