Strings |
"Tezos" |
Characters |
"t" |
Integers |
42 , 7 |
Natural numbers |
42n , 7n |
Unit |
unit |
Boolean |
let has_drivers_license: bool = false; let adult: bool = true;
|
Boolean Logic |
(not true) = false = (false && true) = (false || false)
|
Mutez (micro tez) |
42mutez , 7mutez |
Address |
("tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx": address) , ("KT1JepfBfMSqkQyf9B1ndvURghGsSB8YCLMD": address) |
Addition |
3 + 4 , 3n + 4n |
Multiplication & Division |
3 * 4 , 3n * 4n , 10 / 5 , 10n / 5n |
Modulo |
10 mod 3 |
Tuples |
type name = (string, string); let winner: name = ("John", "Doe"); let first_name: string = winner[0]; let last_name: string = winner[1];
|
Types |
type age = int; , type name = string; |
Includes |
#include "library.mligo" |
Functions |
let add = (a: int, b: int) : int => a + b;
|
If Statement |
let new_id: int = if (age < 16) { failwith ("Too young to drive."); } else { prev_id + 1; }
|
Options |
type middle_name = option(string); let middle_name : middle_name = Some("Foo"); let middle_name : middle_name = None;
|
Variable Binding |
let age: int = 5; |
Type Annotations |
("tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx" : address) |
Variants |
type action = | Increment(int) | Decrement(int);
|
Variant (pattern) matching |
let a: action = Increment(5); switch(a) { | Increment(n) => n + 1 | Decrement(n) => n - 1; }
|
Records |
type person = { age: int, name: string }
let john : person = { age: 18, name: "John Doe" };
let name: string = john.name;
|
Maps |
type prices = map(nat, tez);
let prices : prices = Map.literal([ (10n, 60mutez), (50n, 30mutez), (100n, 10mutez) ]);
let price: option(tez) = Map.find_opt(50n, prices);
let prices: prices = Map.update(200n, Some (5mutez), prices);
|
Contracts & Accounts |
let destination_address : address = "tz1..."; let contract : contract(unit) = Tezos.get_contract(destination_address);
|
Transactions |
let payment : operation = Tezos.transaction (unit, amount, receiver);
|
Exception/Failure |
failwith ("Your descriptive error message for the user goes here."); |