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).
Im Allgemeinen bedeutet '#' in Haskell, dass es eine Art von Low Level und/oder primitiven Sachen macht. Sie müssen die Spracherweiterung 'MagicHash' aktivieren, um' '' in Namen zu verwenden. – Lazersmoke