There is a newer version of the record available.

Published July 8, 2026 | Version v2

Function is Class, and Call Frame is Instance. An Introduction to ago Programming Language

Description

Through systematic analysis of technologies such as animation systems, coroutines, and workflow engines, this paper identifies that they essentially attempt to formally represent "actions" in the real world. Traditional programming languages face significant limitations when describing persistent, asynchronous actions that can be suspended by external events; and this limitation is overcome by re‑conceptualising the Call Frame. By extracting CallFrame from low‑level machine mechanisms into an object‑oriented viewpoint, I find that an objectified CallFrame can serve as a complete representation of an action, it leads to the novel proposition: "Function is Class, and CallFrame is Instance.".  Based on this idea, I design and implement the ago programming language (named after the Esperanto word Action). Its core idea treats actions as resumable, persistable CallFrames, with prototype verification completed in Java runtime. This paper elaborates on ago's architecture, and key designs including parameterized classes, type scalarization, extended boxing, and call-time overloading, and some common runspaces in real world.

Files

Function is Class, and Call Frame is Instance. An Introduction to ago Programming Language (en and zh-CN).pdf

Additional details

Software

Repository URL
https://github.com/siphonlab/ago
Programming language
Java , Groovy
Development Status
Active