GreyCat Modules

//Global module variables
var countries_by_name: nodeIndex<String, node<Country>>; //Global index to index all countries

//Global module functions
fn printStats(){
    //Some global module function called printStats
}

//Several Enum and Type definitions
enum TransactionType{
    online("online");
    transfer("transfer");
}
type Country{
    name: String;
    banks: nodeIndex<String, node<Bank>>;
}
type Bank{
    name: String;
    location: geo;
}

Greycat naming convention

Item Convention Example
Modules snake_case smart_city.gcl
Types / Class / Enum UpperCamelCase enum TransactionChannel
Primitive types camelCase nodeTime, nodeIndex, int
Functions camelCase / snake_case * fn getCities()
Variables / Attributes camelCase / snake_case * var cities_by_name: nodeIndex;

Greycat project structure