2017-04-07 5 views
7

Ich habe kürzlich begonnen, Kernbibliotheken auf Hackage zu betrachten, und es gibt eine wiederkehrende Redewendung, die ich nicht verstehe. Hier ist ein Beispiel aus dem ST module:Syntax der ST-Monad-Deklaration

instance Monad (ST s) where 
    {-# INLINE (>>=) #-} 
    (>>) = (*>) 
    (ST m) >>= k 
     = ST (\ s -> 
     case (m s) of { (# new_s, r #) -> 
     case (k r) of { ST k2 -> 
     (k2 new_s) }}) 

Insbesondere ich nicht (# new_s, r #) verstehen. Ich nehme an, der zweite Hash bezieht sich auf einen ungepackten Wert, aber der Rest ist ein Mysterium für mich (vermutlich etwas mit "neuem Staat" zu tun).

Antwort

Verwandte Themen