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{
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