.. index:: single: streamvars
.. _streamvars/0:

.. rst-class:: right

**object**

``streamvars``
==============

Stream variables (supporting logical, backtracable, adding and retrieving of terms).

| **Availability:** 
|    ``logtalk_load(library(loader))``

| **Author:** Nobukuni Kino and Paulo Moura
| **Version:** 1:3:0
| **Date:** 2019-06-15

| **Compilation flags:**
|    ``static, context_switching_calls``


| **Dependencies:**
|   (none)


| **Remarks:**
|    (none)

| **Inherited public predicates:**
|    (none)

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

Public predicates
-----------------

.. index:: new/1
.. _streamvars/0::new/1:

``new/1``
^^^^^^^^^

Makes ``Variable`` a stream variable. Initial state will be empty.

| **Compilation flags:**
|    ``static``

| **Template:**
|    ``new(Variable)``
| **Mode and number of proofs:**
|    ``new(--streamvar)`` - ``one``

| **Exceptions:**
|    Variable is not a variable:
|        ``type_error(variable,Variable)``


------------

.. index:: new/2
.. _streamvars/0::new/2:

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

Makes ``Variable`` a stream variable and sets its initial state to ``Value``.

| **Compilation flags:**
|    ``static``

| **Template:**
|    ``new(Variable,Value)``
| **Mode and number of proofs:**
|    ``new(--streamvar,@nonvar)`` - ``one``

| **Exceptions:**
|    Variable is not a variable:
|        ``type_error(variable,Variable)``


------------

.. index:: (<=)/2
.. _streamvars/0::(<=)/2:

``(<=)/2``
^^^^^^^^^^

Sets the state of the stream variable ``Variable`` to ``Value`` (initializing the variable if needed).

| **Compilation flags:**
|    ``static``

| **Template:**
|    ``Variable<=Value``
| **Mode and number of proofs:**
|    ``(?streamvar)<=(@nonvar)`` - ``one``


------------

.. index:: (=>)/2
.. _streamvars/0::(=>)/2:

``(=>)/2``
^^^^^^^^^^

Unifies ``Value`` with the current state of the stream variable ``Variable``.

| **Compilation flags:**
|    ``static``

| **Template:**
|    ``Variable=>Value``
| **Mode and number of proofs:**
|    ``+streamvar=> ?nonvar`` - ``zero_or_one``


------------

Protected predicates
--------------------

(none)

Private predicates
------------------

(none)

Operators
---------

``op(100,xfx,<=)``
^^^^^^^^^^^^^^^^^^

| **Scope:**
|    ``public``

``op(100,xfx,=>)``
^^^^^^^^^^^^^^^^^^

| **Scope:**
|    ``public``



