¿Por qué no puedo proporcionar una firma de tipo explícita a una acción ST local enlazada con let?
Tengo el siguiente programa simplificado que funciona bien: {-# LANGUAGE Rank2Types #-} module Temp where import Control.Monad.ST import Control.Monad import Data.STRef mystery :: Int -> Int mystery start = let run :: ST s Int run = do count <- newSTRef (1::Int) loop count start readSTRef count in runST run . . . Read more