-invokeRlCback :: PrimIO ()
-invokeRlCback =
- _casm_ `` %r=(KeyCode)current_kc; '' >>= \ kc ->
- _casm_ `` %r=(int)current_narg; '' >>= \ narg ->
- getCbackList >>= \ ls ->
- (case (dropWhile (\ (key,_) -> kc/=key) ls) of
- [] -> -- no match
- returnPrimIO (-1)
- ((_,cback):_) ->
- ioToPrimIO (cback narg kc)
- ) >>= \ ret_val ->
- _casm_ `` rl_return=(int)%0; '' ret_val >>= \ () ->
- returnPrimIO ()
+invokeRlCback :: IO ()
+invokeRlCback = do
+ kc <- _casm_ `` %r=(KeyCode)current_kc; ''
+ narg <- _casm_ `` %r=(int)current_narg; ''
+ ls <- getCbackList
+ ret_val <-
+ (case (dropWhile (\ (key,_) -> kc/=key) ls) of
+ [] -> return (-1)
+ ((_,cback):_) -> cback narg kc
+ )
+ _casm_ `` rl_return=(int)%0; '' ret_val