Modules and Interfaces Examples

Module export and import-all

Files: examples/cons.aja and examples/main_import_all.aja

export (
    ally,
    delly,
    counter
)

fuc ally(hisname: str, hername: str) -> str:
    result = hisname + " & " + hername
    return result

fuc delly(his: str) -> str:
    out = his + "!"
    return out

counter = 7
import (
    "cons"
)

print(cons.ally("Aria", "Nox"))
print(cons.delly("Hello"))
print(cons.counter)

Selective import

File: examples/main_import_selective.aja

import (
    {
        ally
        delly
        counter
    } from "cons"
)

print(ally("Mio", "Lyn"))
print(delly("Hey"))
print(counter)

No-comma multi import

File: examples/import_many_nocomma.aja

import (
    "cons"
    "oneline_mod"
)
print(cons.counter)
print(oneline_mod.hi("aja"))

Interfaces (single file)

File: examples/interface_basic.aja

interface Speaker:
    speak(prefix: str) -> str

type Dog:
    name: str

type Cat:
    name: str

fuc (d: Dog) speak(prefix: str) -> str:
    return prefix + " " + d.name

fuc (c: Cat) speak(prefix: str) -> str:
    return prefix + " " + c.name

fuc intro(s: Speaker) -> str:
    return s.speak("Hello")

a = Dog("Rex")
b = Cat("Mimi")
print(intro(a))
print(intro(b))

Interfaces (cross-module)

Files: examples/interface_module_lib.aja and examples/interface_module_main.aja

interface Speaker:
    speak(prefix: str) -> str

type User:
    name: str

fuc (u: User) speak(prefix: str) -> str:
    return prefix + " " + u.name

fuc make(name: str) -> Speaker:
    u = User(name)
    return u

export (
    Speaker,
    make
)
import (
    {
        Speaker
        make
    } from "interface_module_lib"
)

fuc greet(s: Speaker) -> str:
    return s.speak("Hi")

x = make("Aja")
print(greet(x))