What is the structure of an EK9 source file?

← Getting Started · Ref: Q875

Every EK9 file starts with '#!ek9' then 'defines module <name>'. Inside the module you place sections like 'defines program', 'defines function', 'defines class', 'defines record'. A runnable program needs 'defines program' with a named entry point. Indentation (2 spaces) defines scope — no braces or semicolons.

See Q1 for minimal program. See Q5 for file structure. See Q17 for entry points.

Example

defines module qa.getting.started.structure

  defines function

    greet() as pure
      -> who as String
      <- rtn as String: `Hello, ${who}!`

  defines program

    ShowStructure()
      stdout <- Stdout()
      message <- greet("EK9 developer")
      stdout.println(message)
Other ways to ask this
  • What keywords do I need for an EK9 program?
  • Why do I need defines module and defines program?
  • Show me the skeleton of an EK9 file

Coming from another language?

Java: package + class + main method. Python: just code. Go: package main + func main. EK9: defines module + defines program + named entry.

Keywords: module, skeleton, indent, structure, program, file, defines