Did you know ... Search Documentation:
Pack logtalk -- logtalk-3.102.0/docs/apis/_sources/lru_cache_protocol_0.rst.txt

.. index:: single: lru_cache_protocol .. _lru_cache_protocol/0:

.. rst-class:: right

protocol

lru_cache_protocol

LRU (Least Recently Used) cache protocol. Key-value pairs are represented as Key-Value.

| Availability: | logtalk_load(lru_caches(loader))

| Author: Paulo Moura | Version: 1:0:0 | Date: 2026-09-08

| Compilation flags: | static

| Dependencies: | (none)

| Remarks: | (none)

| Inherited public predicates: | (none)

.. contents:: :local: :backlinks: top

Public predicates

.. index:: new/2 .. _lru_cache_protocol/0::new/2:

new/2 ^^^^^^^^^

Creates a new empty cache with the given maximum capacity.

| Compilation flags: | static

| Template: | new(Capacity,Cache) | Mode and number of proofs: | new(+non_negative_integer,-cache) - one_or_error

| Exceptions: | Capacity is a variable: | instantiation_error | Capacity is neither a variable nor an integer: | type_error(integer,Capacity) | Capacity is an integer but is less than zero: | domain_error(non_negative_integer,Capacity)


.. index:: capacity/2 .. _lru_cache_protocol/0::capacity/2:

capacity/2 ^^^^^^^^^^^^^^

Returns the maximum cache capacity.

| Compilation flags: | static

| Template: | capacity(Cache,Capacity) | Mode and number of proofs: | capacity(+cache,-non_negative_integer) - one


.. index:: size/2 .. _lru_cache_protocol/0::size/2:

size/2 ^^^^^^^^^^

Returns the number of entries in the cache.

| Compilation flags: | static

| Template: | size(Cache,Size) | Mode and number of proofs: | size(+cache,-non_negative_integer) - one


.. index:: empty/1 .. _lru_cache_protocol/0::empty/1:

empty/1 ^^^^^^^^^^^

True iff the cache is empty.

| Compilation flags: | static

| Template: | empty(Cache) | Mode and number of proofs: | empty(+cache) - zero_or_one


.. index:: lookup/3 .. _lru_cache_protocol/0::lookup/3:

lookup/3 ^^^^^^^^^^^^

Looks up a matching key-value pair without changing its recency. Fails if the key is not found or the value does not unify.

| Compilation flags: | static

| Template: | lookup(Key,Value,Cache) | Mode and number of proofs: | lookup(+ground,?term,+cache) - zero_or_one_or_error

| Exceptions: | Key is not ground: | instantiation_error


.. index:: get/4 .. _lru_cache_protocol/0::get/4:

get/4 ^^^^^^^^^

Looks up a matching key-value pair and marks it as most recently used, returning the updated cache. Fails if the key is not found or the value does not unify.

| Compilation flags: | static

| Template: | get(Key,Value,Cache,NewCache) | Mode and number of proofs: | get(+ground,?term,+cache,-cache) - zero_or_one_or_error

| Exceptions: | Key is not ground: | instantiation_error


.. index:: put/4 .. _lru_cache_protocol/0::put/4:

put/4 ^^^^^^^^^

Inserts or replaces a key-value pair, marks it as most recently used, and evicts the least recently used entry when necessary.

| Compilation flags: | static

| Template: | put(Key,Value,Cache,NewCache) | Mode and number of proofs: | put(+ground,+term,+cache,-cache) - one_or_error

| Exceptions: | Key is not ground: | instantiation_error


.. index:: update/5 .. _lru_cache_protocol/0::update/5:

update/5 ^^^^^^^^^^^^

Updates an existing matching key-value pair and marks it as most recently used. Fails if the key is not found or the old value does not unify.

| Compilation flags: | static

| Template: | update(Key,OldValue,NewValue,Cache,NewCache) | Mode and number of proofs: | update(+ground,?term,+term,+cache,-cache) - zero_or_one_or_error

| Exceptions: | Key is not ground: | instantiation_error


.. index:: delete/4 .. _lru_cache_protocol/0::delete/4:

delete/4 ^^^^^^^^^^^^

Deletes a matching key-value pair, returning the updated cache. Fails if the key is not found or the value does not unify.

| Compilation flags: | static

| Template: | delete(Key,Value,Cache,NewCache) | Mode and number of proofs: | delete(+ground,?term,+cache,-cache) - zero_or_one_or_error

| Exceptions: | Key is not ground: | instantiation_error


.. index:: evict/3 .. _lru_cache_protocol/0::evict/3:

evict/3 ^^^^^^^^^^^

Evicts and returns the least recently used key-value pair. Fails if the cache is empty.

| Compilation flags: | static

| Template: | evict(Cache,Pair,NewCache) | Mode and number of proofs: | evict(+cache,-pair,-cache) - zero_or_one


.. index:: as_list/2 .. _lru_cache_protocol/0::as_list/2:

as_list/2 ^^^^^^^^^^^^^

Returns the cache key-value pairs ordered from most recently used to least recently used.

| Compilation flags: | static

| Template: | as_list(Cache,Pairs) | Mode and number of proofs: | as_list(+cache,-list(pair)) - one


.. index:: clear/2 .. _lru_cache_protocol/0::clear/2:

clear/2 ^^^^^^^^^^^

Returns an empty cache with the same capacity.

| Compilation flags: | static

| Template: | clear(Cache,EmptyCache) | Mode and number of proofs: | clear(+cache,-cache) - one


Protected predicates

(none)

Private predicates

(none)

Operators

(none)

.. seealso::

:ref:`lru_cache <lru_cache/0>`