# Aleo Supplementary Instructions ## Instruction Greensheet | Name | Description | |:----------------------- |:----------------------------------------- | | [call](#call) | Call a funtion or closure | | [cast](#cast) | Casts the operands into the declared type | | [closure](#closure) | A function of its own environment | | [decrement](#decrement) | Decrement value by amount | | [finalize](#finalize) | Finalizes the operands on-chain | | [function](#function) | Declare a function | | [import](#import) | Import a program | | [increment](#increment) | Increment value by amount | | [input](#input) | Defines an input argument to a function | | [mapping](#mapping) | Map keys with values | | [output](#output) | Defines an output of a function | ## Instruction Documentation #### `call` [Back to top](#Instruction-Greensheet) ##### Description Calls a funtion or closure with parameter(s) and stores the results in the destination register(s). #### `cast` [Back to top](#Instruction-Greensheet) Cast the one or more operand(s) into declared type and stores the result in the destination register. The declared type can be either a customized `interface` or a `record`. Casting to `literals` is currently not supported. Casting to an `external record` is illegal. The member of the interface cannot be of type `record`. ##### Description #### `closure` [Back to top](#Instruction-Greensheet) Closure is structured with an identifier, inputs, instructions, and outputs. Instructions are in order of execution. Outputs are in order desired. ##### Description #### `decrement` [Back to top](#Instruction-Greensheet) Decrements the value stored at the `first` operand in `mapping` by the amount in the `second` operand. ##### Description #### `finalize` [Back to top](#Instruction-Greensheet) Finalizes the operands on-chain (make it public to the network). ##### Description #### `function` [Back to top](#Instruction-Greensheet) See [closure](####closure). In addition to closure, function has a optional `finalize` command and logic. ##### Description #### `import` [Back to top](#Instruction-Greensheet) ##### Description An import statement defines an imported program, and is of the form `import {name}.{network};`. If no `network`-level domain is specified, the default network is used. ##### Description #### `increment` [Back to top](#Instruction-Greensheet) Increments the value stored at the `first` operand in `mapping` by the amount in the `second` operand. #### `input` [Back to top](#Instruction-Greensheet) ##### Description Parse the input and store it in a register with a declared register type. #### `mapping` [Back to top](#Instruction-Greensheet) ##### Description Mapping has an identifier, keys and values. Key and value are intiaized with an identifier and a type. #### `output` [Back to top](#Instruction-Greensheet) ##### Description Output a register or a register member.