haskell – Curious about why entering the Monet Transformer StateT returns to instead of (a, s)

I was reading the source of the StateT monad transformer, since it reads like this:

get :: (Monad m) => StateT s m s
get = state $  s -> (s, s)

From the previous code it seemed obtain returns a tuple (H.H), that looked good, but I wonder why when I use it, obtain returned a In t, instead of (Int, Int)?

I've crawled a lot of source code trying to find when or what changed it, but to no avail.

w :: StateT Int IO String
w = to do
a <- get
liftIO $ prints a - 2, but why? Should not this be (2, 2) instead?
returns $ sample

result = runStateT w 2 - ("2", 2)