purescript-0.15.7: tests/purs/passing/DerivingContravariant.purs
module Main where
import Prelude
import Data.Functor.Contravariant (class Contravariant)
import Data.Predicate (Predicate)
import Data.Tuple (Tuple)
import Effect.Console (log)
data Test f a
= Test0
| Test1 (Predicate a)
| Test2 (Predicate (Predicate (Predicate a)))
| Test3 Int (forall a. Array a -> Array a)
| Test4 Int (f a)
| Test5 (Array (a -> Int)) (Tuple (Predicate a) Int)
| Test6 { nested :: Array { x :: f { a :: a } } }
derive instance Contravariant f => Contravariant (Test f)
main = log "Done"