packages feed

liquidhaskell-0.9.0.2.1: tests/pos/Extype.hs

{-# LANGUAGE ExistentialQuantification, MultiParamTypeClasses #-}
module Extype where

class Show (layout a) => LayoutClass layout a where

data Layout a = forall l. Layout (l a)


readsLayout :: Layout a -> String -> Layout a
readsLayout (Layout l) s = Layout (asTypeOf undefined l)

type Size = Int
data Step s a = S s a

data Stream a =
    forall s. Stream
    (s -> Step s a)             -- stepper function
    !s                          -- current state
    !Size                       -- size hint


foo :: Stream a -> Size
foo (Stream _ _ s) = s


stream = Stream (\_ -> S 1 True) 0 0