Note that a suspension is not a standard Prolog data structure and can only be manipulated in a restricted way. In particular, a suspension is not a term with functor 'GOAL' or 'WOKEN GOAL' although it is printed this way by default. suspension_to_goal/3 is the only way to access the contents of a suspension.
[eclipse 1]: make_suspension(writeln(hello),S), suspension_to_goal(S, Goal, Module). S = 'GOAL'(writeln(hello), eclipse) Goal = writeln(hello) Module = eclipse Delayed goals: writeln(hello) yes. [eclipse 2]: make_suspension(writeln(hello),S), call_suspension(S), suspension_to_goal(S, Goal, Module). hello no (more) solution.