Again thank you to everybody!
Brandon, I see no warnings in the documentation regarding privilege requirement for raising a scheduler's priority -- the strings "priv" and "user" are absent, and "su" only appears twice. Also I did not understand until today that while Mac is a variety of Unix, it is not a variety of Linux.
Carter and John, I will try the polling method you suggest. A polling cycle with a period of 20 ms would be fast enough for me. I don't need Haskell to handle audio math, just to send control signals (to Max/MSP). As soon as I figure out how to get UDP from Haskell to Max, I'll run a test. Hopefully the problem I'm seeing derives from print, not threadDelay. (threadDelay accepts its time argument in millionths of a second! That would seem to suggest it was designed to handle at least the speed I'm hoping for ...)