Skip to content

Exploring the Language 1

netrium edited this page Mar 24, 2012 · 10 revisions

Increasing the Complexity

Joining two contracts

The following sample contract extends the top contract by adding a payment (give) of one EUR to the existing receipt of one GBP at the time of acquisition.

contract = one (Financial gbp cash Nothing) `and` give (one (Financial eur cash Nothing))

The Syntax Tree is now:

Syntax Tree

The Decision Tree now shows this as follows:

Decision Tree

Going beyond One

contract = scale 1000 (one (Financial gbp cash Nothing))

The scale keyword acts as a multiplier. It is used to multiply the child contract by a factor. In the above example, the contract acquirer now receives 1,000 GBP at the moment of contract acquisition.

The Syntax Tree for this contract:

Decision Tree

The Decision Tree now shows:

Decision Tree

scale can be added to a contract many times. There are times that this can be useful, especially when working with multiple independent external observables.

contract = scale 2000 (scale 1000 (one (Financial gbp cash Nothing)))

This now shows as:

Syntax Tree

The Decision Tree now shows:

Decision Tree

Introducing Time into a contract

contract = when (at (date 2013 1 1)) (one (Financial gbp cash Nothing))

The above contract, as long as it is acquired before 1 January 2013, will deliver one GBP to the acquirer at exactly 00:00:00 on 1 January 2013.

The Syntax Tree:

Syntax Tree

The Decision Tree:

Decision Tree

Samples

A suite of samples is available here.

Clone this wiki locally