Skip to content


This listing explains the usage of every Pony keyword.

Keyword Usage
actor defines an actor
as conversion of a value to another Type (can raise an error)
be behavior, executed asynchronously
box default reference capability – object is readable, but not writable
break to step out of a loop statement
class defines a class
compile_error will provoke a compile error
compile_intrinsic implementation is written in C and not available as Pony code
continue continues a loop with the next iteration
consume move a value to a new variable, leaving the original variable empty
digestof create a USize value that summarizes the Pony object, similar to a Java object’s hashCode() value.
do loop statement, or after a with statement
else conditional statement in if, for, while, repeat, try (as a catch block), match
elseif conditional statement, also used with ifdef
embed embed a class as a field of another class
end ending of: if then, ifdef, while do, for in, repeat until, try, object, recover, match
error raises an error
for loop statement
fun define a function, executed synchronously
if (1) conditional statement
(2) to define a guard in a pattern match
ifdef when defining a build flag at compile time: ponyc –D “foo”
iftype type conditional statement iftype A <: B checks if A is a subtype of B
in used in a for in - loop statement
interface used in structural subtyping
is (1) used in nominal subtyping
(2) in type aliasing
(3) identity comparison
isnt negative identity comparison
iso reference capability – read and write uniqueness
let declaration of immutable variable: you can’t rebind this name to a new value
match pattern matching
new constructor
not logical negation
object to make an object literal
primitive declares a primitive type
recover removes the reference capability of a variable
ref reference capability – object (on which function is called) is mutable
repeat loop statement
return to return early from a function
tag reference capability – neither readable nor writeable, only object identity
then (1) in if conditional statement
(2) as a (finally) block in try
this the current object
trait used in nominal subtyping: class Foo is TraitName
trn reference capability – write uniqueness, no other actor can write to the object
try error handling
type to declare a type alias
until loop statement
use (1) using a package
(2) using an external library foo: use “lib:foo”
(3) declaration of an FFI signature
(4) add a search path for external libraries: use "path:/usr/local/lib"
var declaration of mutable variable: you can rebind this name to a new value
val reference capability – globally immutable object
where when specifying named arguments
while loop statement
with ensure disposal of an object