An executable project must have an entry point method, which will be called to initiate execution. This method can be found automatically by the compiler, or you can mark it explicitly.
There are several basic rules for selecting an entry point:
    // Most simple signature for an entry method.
    static method Main;
    // Returns an integer exit code. Zero stands for "normal termination".
    static method Main: Integer;
    // Receives a parsed copy of the command line.
    static method Main(Args: Array[String]);
    // Receives the command line and returns an exit code.
    static method Main(Args: Array[String]): Integer;
This code fragment shows a "Hello, World" application written in Freya:
using System;
namespace Freya.Hello.World;
private
    Program = class
    private static
        method Main(Args: Array[String]);
    end;
implementation for Program is
    method Main(Args: Array[String]);
    begin
        Console.WriteLine('Hello, Freya!');
    end;
end.
We are receiving a copy of the command line, though we're not using it. Please note that Main has been declared static and private. However, you could also declare Main with any access level you prefer.
Since, most of the times, the class containing the entry point is declared only with this purpose, a common trick is to declare this class as a static one, like this:
    Program = static class
    private
        method Main(Args: Array[String]);
    end;
Now, all members defined by Program are automatically considered static members of that class.
Actually, there's no need to declare a separate class for only defining a Main method inside. You can use an anonymous implementation section for this purpose. Our previous "Hello, World!" can be written in this shorter form:
using System;
namespace Freya.Hello.World;
implementation
    method Main(Args: Array[String]);
    begin
        Console.WriteLine('Hello, Freya!');
    end;
end.
Anonymous implementations automatically generate a static class containing any members declared inside the implementation section.
    The Freya Programming Language
    Program and file structure
    Lexical structure
    Projects and source files
    Namespaces
    Implementation sections
    using clauses
    Methods