¿Cómo mantener el primer resultado de una función de Prolog?

Necesito escribir una función personalizada que será llamada muchas veces por otras funciones fijas. En esta función, en el primer momento llamado, devolverá el número total de líneas de un archivo. El segundo tiempo llamado de esta función, adelante, devolverá el número de líneas en pequeñas secciones de este archivo. Mi pregunta es cómo conservo el primer resultado devuelto (número total de líneas de un archivo) y lo uso para los próximos tiempos de llamada de mi función. Necesito escribir o declarar cualquier cosa solo en esta función (no en la persona que llama). Algo como esto:

myFunction(Input, MyResult, FirstResult) :-
   calculateInputFunction(Input, Result),
   !,
   MyResult is Result,
   ... .

El problema es que cada vez que se llama a myFunction, recibe una entrada diferente y devuelve MyResult diferente. Pero me gustaría conservar el primer MyResult para usar en los próximos tiempos de llamada de myFunction. ¿Cómo puedo hacer eso? Muchas gracias por su respuesta de antemano.

myFunction([V1,V2], Result) :-
  reset,
  cached_all(a(V1,V2)),
  use V1, V2 to calculate Result, 
  ...
  reset,
  finishedCode. 

Lo anterior es mi función, hay otras funciones que llamarán a myFunction al transferir el valor de V1, V2 a esta función y recuperar el Resultado.

Respuestas a la pregunta(1)

Su respuesta a la pregunta