次のコードにおいて型検査時に、go = readArray array で、その次の行のコメントのようなエラーが出ました。
エラーの原因としては、2つの ST の(片方は STArray ですが)内部状態の ss1 が別物だと認識されていることと考えています。
この ss1 が同じであると明記することはできますか?
または、この形式だと根本的に ss1 は別物になるべきでしょうか?

ちなみに go のシグネチャを変更したコメントアウトした版にすると s が同じことが明記できるので型検査が通ります。

#!/usr/bin/env stack
-- stack --resolver lts-9.14 --install-ghc runghc --package array

import Control.Monad.ST
import Data.Array.ST

main = print $ runST $ do
    array <- newArray (0, 1 :: Int) (0 :: Int) :: ST s (STArray s Int Int)
    let
        go :: Int -> ST s Int
        go = readArray array
-- starray.hs:11:14: error:
--   • No instance for (MArray (STArray s) Int (ST s1))
--     arising from a use of ‘readArray
        -- go :: STArray s Int Int -> Int -> ST s Int
        -- go = readArray
    writeArray array 1 1
    go 1
    -- go array 1