Ergo Standard Library
The following libraries are provided with the Ergo compiler.
Stdlib
The following functions are in the org.accordproject.ergo.stdlib namespace and available by default.
Functions on Integer
| Name | Signature | Description | 
|---|---|---|
integerAbs | (x:Integer) : Integer | Absolute value | 
integerLog2 | (x:Integer) : Integer | Base 2 integer logarithm | 
integerSqrt | (x:Integer) : Integer | Integer square root | 
integerToDouble | (x:Integer) : Double | Cast to a Double | 
integerMod | (x:Integer, y:Integer) : Integer | Integer remainder | 
integerMin | (x:Integer, y:Integer) : Integer | Smallest of x and y | 
integerMax | (x:Integer, y:Integer) : Integer | Largest of x and y | 
Functions on Double
| Name | Signature | Description | 
|---|---|---|
abs | (x:Double) : Double | Absolute value | 
sqrt | (x:Double) : Double | Square root | 
exp | (x:Double) : Double | Exponential | 
log | (x:Double) : Double | Natural logarithm | 
log10 | (x:Double) : Double | Base 10 logarithm | 
ceil | (x:Double) : Double | Round to closest integer above | 
floor | (x:Double) : Double | Round to closest integer below | 
truncate | (x:Double) : Integer | Cast to an Integer | 
doubleToInteger | (x:Double) : Integer | Same as truncate | 
minPair | (x:Double, y:Double) : Double | Smallest of x and y | 
maxPair | (x:Double, y:Double) : Double | Largest of x and y | 
Functions on String
| Name | Signature | Description | 
|---|---|---|
length | (x:String) : Integer | Prints length of a string | 
encode | (x:String) : String | Encode as URI component | 
decode | (x:String) : String | Decode as URI component | 
Functions on Arrays
| Name | Signature | Description | 
|---|---|---|
count | (x:Any[]) : Integer | Number of elements | 
flatten | (x:Any[][]) : Any[] | Flattens a nested array | 
arrayAdd | (x:Any[],y:Any[]) : Any[] | Array concatenation | 
arraySubtract | (x:Any[],y:Any[]) : Any[] | Removes elements of y in x | 
inArray | (x:Any,y:Any[]) : Boolean | Whether x is in y | 
containsAll | (x:Any[],y:Any[]) : Boolean | Whether all elements of y are in x | 
distinct | (x:Any[]) : Any[] | Duplicates elimination | 
Note: For most of these functions, the type-checker infers more precise types than indicated here. For instance concat([1,2],[3,4]) will return [1,2,3,4] and have the type Integer[].
Aggregate functions
| Name | Signature | Description | 
|---|---|---|
max | (x:Double[]) : Double | The largest element in x | 
min | (x:Double[]) : Double | The smallest element in x | 
sum | (x:Double[]) : Double | Sum of the elements in x | 
average | (x:Double[]) : Double | Arithmetic mean | 
Math functions
| Name | Signature | Description | 
|---|---|---|
acos | (x:Double) : Double | The inverse cosine of x | 
asin | (x:Double) : Double | The inverse sine of x | 
atan | (x:Double) : Double | The inverse tangent of x | 
atan2 | (x:Double, y:Double) : Double | The inverse tangent of x / y | 
cos | (x:Double) : Double | The cosine of x | 
cosh | (x:Double) : Double | The hyperbolic cosine of x | 
sin | (x:Double) : Double | The sine of x | 
sinh | (x:Double) : Double | The hyperbolic sine of x | 
tan | (x:Double) : Double | The tangent of x | 
tanh | (x:Double) : Double | The hyperbolic tangent of x | 
Other functions
| Name | Signature | Description | 
|---|---|---|
failure | (x:String) : ErgoErrorResponse | Ergo error from a string | 
toString | (x:Any) : String | Prints any value to a string | 
toText | (x:Any) : String | Template variant of toString (internal) | 
Time
The following functions are in the org.accordproject.time namespace and are available by importing that namespace.
They rely on the time.cto types from the Accord Project models.
Functions on DateTime
| Name | Signature | Description | 
|---|---|---|
now | () : DateTime | Returns the time when execution started | 
dateTime | (x:String) : DateTime | Parse a date and time | 
getSecond | (x:DateTime) : Long | Second component of a DateTime | 
getMinute | (x:DateTime) : Long | Minute component of a DateTime | 
getHour | (x:DateTime) : Long | Hour component of a DateTime | 
getDay | (x:DateTime) : Long | Day of the month component of a DateTime | 
getWeek | (x:DateTime) : Long | Week of the year component of a DateTime | 
getMonth | (x:DateTime) : Long | Month component in a DateTime | 
getYear | (x:DateTime) : Long | Year component in a DateTime | 
isAfter | (x:DateTime, y:DateTime) : Boolean | Whether x if after y | 
isBefore | (x:DateTime, y:DateTime) : Boolean | Whether x is before y | 
isSame | (x:DateTime, y:DateTime) : Boolean | Whether x is the same DateTime as y | 
dateTimeMin | (x:DateTime[]) : DateTime | The earliest in an array of DateTime | 
dateTimeMax | (x:DateTime[]) : DateTime | The latest in an array of DateTime | 
format | (x:DateTime,f:String) : String | Prints date x according to format f | 
Functions on Duration
| Name | Signature | Description | 
|---|---|---|
durationAs | (x:Duration, y:TemporalUnit) : Duration | Change the unit for duration x to y | 
diffDurationAs | (x:DateTime, y:DateTime, z:TemporalUnit) : Duration | Duration between x and y in unit z | 
diffDuration | (x:DateTime, y:DateTime) : Duration | Duration between x and y in seconds | 
addDuration | (x:DateTime, y:Duration) : DateTime | Add duration y to x | 
subtractDuration | (x:DateTime, y:Duration) : DateTime | Subtract duration y to x | 
divideDuration | (x:Duration, y:Duration) : Double | Ratio between durations x and y | 
Functions on Period
| Name | Signature | Description | 
|---|---|---|
diffPeriodAs | (x:DateTime, y:DateTime, z:PeriodUnit) : Period | Time period between x and y in unit z | 
addPeriod | (x:DateTime, y:Period) : DateTime | Add time period y to x | 
subtractPeriod | (x:DateTime, y:Period) : DateTime | Subtract time period y to x | 
startOf | (x:DateTime, y:PeriodUnit) : DateTime | Start of period y nearest to DateTime x | 
endOf | (x:DateTime, y:PeriodUnit) : DateTime | End of period y nearest to DateTime x |