.. index:: value
.. index:: value, value type, validation, structure, structure type, structure instance, array, array type, array instance, function, function type, function instance, null reference, scalar reference, store
For the purpose of checking argument :ref:`values <syntax-val>` against the parameter types of exported :ref:`functions <syntax-func>`, values are classified by :ref:`value types <syntax-valtype>`. The following auxiliary typing rules specify this typing relation relative to a :ref:`store <syntax-store>` S in which possibly referenced :ref:`addresses <syntax-addr>` live.
${rule-ignore: Val_ok/*}
$${rule-prose: Num_ok}
$${rule: Num_ok}
$${rule-prose: Vec_ok}
$${rule: Vec_ok}
$${rule-prose: Ref_ok/null}
$${rule: Ref_ok/null}
$${rule-prose: Ref_ok/i31}
$${rule: Ref_ok/i31}
$${rule-prose: Ref_ok/struct}
$${rule: Ref_ok/struct}
$${rule-prose: Ref_ok/array}
$${rule: Ref_ok/array}
$${rule-prose: Ref_ok/exn}
$${rule: Ref_ok/exn}
$${rule-prose: Ref_ok/func}
$${rule: Ref_ok/func}
$${rule-prose: Ref_ok/host}
$${rule: Ref_ok/host}
Note
A bare host reference is considered internalized.
$${rule-prose: Ref_ok/extern}
$${rule: Ref_ok/extern}
$${rule-prose: Ref_ok/sub}
$${rule: Ref_ok/sub}
.. index:: external address, external type, validation, import, store
For the purpose of checking :ref:`external address <syntax-externaddr>` against :ref:`imports <syntax-import>`, such values are classified by :ref:`external types <syntax-externtype>`. The following auxiliary typing rules specify this typing relation relative to a :ref:`store <syntax-store>` S in which the referenced instances live.
.. index:: function type, function address
$${rule-prose: Externaddr_ok/func}
$${rule: Externaddr_ok/func}
.. index:: table type, table address
$${rule-prose: Externaddr_ok/table}
$${rule: Externaddr_ok/table}
.. index:: memory type, memory address
$${rule-prose: Externaddr_ok/mem}
$${rule: Externaddr_ok/mem}
.. index:: global type, global address, value type, mutability
$${rule-prose: Externaddr_ok/global}
$${rule: Externaddr_ok/global}
.. index:: tag type, tag address, exception tag, function type
$${rule-prose: Externaddr_ok/tag}
$${rule: Externaddr_ok/tag}
$${rule-prose: Externaddr_ok/sub}
$${rule: Externaddr_ok/sub}