@@ -19,6 +19,7 @@ module Data.Terminfo.Eval ( cap_expression_required_bytes
19import Data.Marshalling
19import Data.Marshalling
20import Data.Terminfo.Parse
20import Data.Terminfo.Parse
22+import Control.DeepSeq
22import Control.Monad.Identity
23import Control.Monad.Identity
23import Control.Monad.Reader
24import Control.Monad.Reader
24import Control.Monad.State.Strict
25import Control.Monad.State.Strict
@@ -154,7 +155,7 @@ serialize_cap_expression :: MonadIO m => CapExpression -> [CapParam] -> OutputBu
154serialize_cap_expression cap params out_ptr = do
155serialize_cap_expression cap params out_ptr = do
155 let params' = apply_param_ops cap params
156 let params' = apply_param_ops cap params
156 (!out_ptr', _) <- runStateT (runReaderT (serialize_cap_ops out_ptr (cap_ops cap)) (cap, params')) []
157 (!out_ptr', _) <- runStateT (runReaderT (serialize_cap_ops out_ptr (cap_ops cap)) (cap, params')) []
157− return out_ptr'
158+ return $! out_ptr'
159serialize_cap_ops :: MonadIO m => OutputBuffer -> CapOps -> EvalT m OutputBuffer
160serialize_cap_ops :: MonadIO m => OutputBuffer -> CapOps -> EvalT m OutputBuffer
160serialize_cap_ops out_ptr ops = foldM serialize_cap_op out_ptr ops
161serialize_cap_ops out_ptr ops = foldM serialize_cap_op out_ptr ops