st-monad

    0

    1答えて

    私は現在、入力した次の関数ttを書くことができますどのようにエラー: 私は ttで runST、内側 s変数の状態が機能 fにねじ込むことができると考え t :: Int t = runST $ do ref <- newSTRef 10 readSTRef ref tt :: (STRef s a -> ST s a) -> Int tt f = runST $ do

    0

    1答えて

    私は再帰関数を作成しようとしていますが、簡単にするためにリストとリストを作成してビルドしています。配列の作成と読み込みの両方を行う必要があるので、私は可変配列を使用しているので、一定の時間の読み書きができます。だから、署名と機能次のように次のようになります。 f :: [a] -> ST s ([a], STArray s Int a) -> ST s ([a], STArray s Int a)

    7

    1答えて

    最近私はHackageのコアライブラリを見始めました。私は理解できない繰り返しのイディオムがあります。 instance Monad (ST s) where {-# INLINE (>>=) #-} (>>) = (*>) (ST m) >>= k = ST (\ s -> case (m s) of { (# new_s, r #) ->