Ticket #2440: T2440.hs

File T2440.hs, 513 bytes (added by morabbin, 7 years ago)

Exhibits problems described in #2440

Line 
1{-# LANGUAGE TypeFamilies, ScopedTypeVariables #-}
2module Foo (foo) where
3
4import Control.Monad.ST
5import Data.STRef
6
7class V v where
8  type M v :: * -> *
9
10  rd :: v -> Int -> M v Int
11
12data Vec s = Vec (STRef s Int)
13
14instance V (Vec s) where
15  type M (Vec s) = ST s
16
17  rd (Vec r) n = do
18                   m <- readSTRef r
19                   return (m+n)
20
21foo :: forall s. Vec s -> Int -> ST s Int
22foo v n = go n
23  where
24    go 0 = return 0
25    go n = do
26             m <- rd v n -- :: ST s Int
27             go m