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 |