import qualified Sound.Alsa.Sequencer as ALSA import Control.Monad (when, ) main :: IO () main = ALSA.with ALSA.default_seq_name ALSA.Block $ \h -> do i <- ALSA.query_first_client (h :: ALSA.SndSeq ALSA.OutputMode) let loop = do putStrLn =<< ALSA.client_info_get_name i more <- ALSA.query_next_client h i when more loop loop