c6dacb705c3a24cf4570c01ae237f4080e45f3f7
[ghc.git] / testsuite / tests / simplCore / should_compile / T7785.hs
1 {-# LANGUAGE TypeFamilies, ConstraintKinds #-}
2
3 module Foo( shared, foo, bar) where
4
5 import GHC.Exts
6
7 type family Domain (f :: * -> *) a :: Constraint
8
9 type instance Domain [] a = ()
10
11 instance MyFunctor [] where
12 myfmap = map
13
14 class MyFunctor f where
15 myfmap :: (Domain f a, Domain f b) => (a -> b) -> f a -> f b
16
17 shared :: (MyFunctor f, Domain f Int) => f Int -> f Int
18 shared = let
19 f = myfmap negate
20 in
21 f. f. f. f. f. f. f. f. f. f. f. f. f. f. f. f. f. f. f. f. f. f. f.
22 f. f. f. f. f. f. f. f. f. f. f. f. f. f. f. f. f. f. f. f. f. f. f.
23 f. f. f. f. f. f. f. f. f. f. f. f. f. f. f. f. f. f. f. f. f. f. f.
24 f. f. f. f. f. f. f. f. f. f. f. f. f. f. f. f. f. f. f. f. f. f. f.
25 f
26
27 foo xs = shared $ 0:xs
28 bar xs = 0:shared xs