<resource>

The <resource> form may be used to define resources that exist in a unique namespace and are global to the session. (Available as of version 12.20)

Description

The <resource>, which must appear within <library>, consists of definitions relevant for a particular language. Once a resource has been defined by importing or submitting the library containing <resource>, it may not be given a new definition without first clearing the cache. If you attempt to redefine a function, the code will throw an error. However, you may define a resource multiple times with the same definition, meaning that you can import libraries containing <resource> multiple times without throwing an error.

Variables defined within a resource may be referred to by the syntax @.[RESOURCE_NAME].[VARIABLE_NAME] even outside the resource.

Syntax

<library>
    <resource name="[NAME_OF_RESOURCE]" for="[LANGUAGE]" 
    [CONTENTS_OF_RESOURCE]
    </resource>
</library>

Attributes

name
The name of the resource you are defining.
for
The language for which the resource is intended.

Valid values are:

xml
The resource is XML. This is the default value.
k3
The resource is in K. The resource is then available to all <code language_="k3"> code.
python
The resource is in Python.
r
The resource is in R.

Example

In this example, a simple function called "myu" is defined based on a K resource. The function is defined in K within the <resource> tag. The namespaces defined here are available everywhere <code language_="k3"> blocks are used: in the opstream, in <def_ufun> and <def_gfun>, in <do>, <tabu>, <sel>, <willbe>, and so on.

<resource name="myu" for="k3">
myfavoritenumber:17.0
add:{x+myfavoritenumber}
</resource>
<def_ufun name="addnum" args="x" types="f(i,f)" code=".myu.add[x]" in="k3"/>