Dala Formula Language

The Dala Formula Language is a light weight language, that is heavily inspired by Excel and Google Sheets formulas, for example: SUM(1, 2, 3, 4, 5) will yield 15.

It is currently a work in progress.

Primitives

These primitive values are used as arguments and as return values from functions.

| Primitive | Description | Syntax | | --------- | ------------------------------------------------ | -------------------- | | Str | A string of characters enclosed by double quotes | "Hello World" | | Num | A number | 1, 2.5, 3.1415 | | Boolean | A boolean value | TRUE, FALSE |

EQ(a, b) -> Boolean

Description

Returns TRUE if the arguments are equal, otherwise returns FALSE.

Arguments

| Name | Description | Type | | ---- | ------------------------------ | --------------------------- | | a | The first argument to compare | Str or Num or Boolean | | b | The second argument to compare | Str or Num or Boolean |

Return Value

| Type | Description | | --------- | --------------------- | | Boolean | The comparison result |

Example

```dala EQ(1,1) -> TRUE

```

NEQ(a, b) -> Boolean

Description

Returns TRUE if the arguments are different, otherwise returns FALSE.

Arguments

| Name | Description | Type | | ---- | ------------------------------ | --------------------------- | | a | The first argument to compare | Str or Num or Boolean | | b | The second argument to compare | Str or Num or Boolean |

Return Value

| Type | Description | | --------- | --------------------- | | Boolean | The comparison result |

Example

```dala EQ(1,1) -> FALSE

```

CONCAT(a, b, c, ...) -> Str

Description

Concatenates all the arguments together into a single string.

Arguments

This function takes one or more arguments.

Non Str arguments will be implictly converted to Str, before being concatenated.

| Name | Description | Type | | ---- | -------------------------------------- | --------------------------- | | a | The first string to concat | Str or Num or Boolean | | b | The second string to concat (optional) | Str or Num or Boolean | | ... | The rest of the strings (optional) | Str or Num or Boolean |

Return Value

| Type | Description | | ----- | --------------------------------------------- | | Str | All arguments concatenated as a single string |

Example

dala CONCAT("Hello", " ", "World") -> "Hello World"

DIVIDE(a, b) -> Num

Description

Divide the first argument by the second one.

Arguments

| Name | Description | Type | | ---- | ------------ | ----- | | a | The dividend | Num | | b | The divisor | Num |

Return Value

| Type | Description | | ----- | ------------------- | | Num | The division result |

Example

dala DIVIDE(10, 2) -> 5

IF(condition, if_true, if_false) -> Literal

Description

If the condition is true, evaluates the if_true, otherwise evaluates the if_false.

Arguments

This function takes one or more arguments.

Non Str arguments will be implictly converted to Str, before being concatenated.

| Name | Description | Type | | --------- | ------------------------------------------ | --------------------------- | | condition | Boolean or function that returns a boolean | Boolean | | iftrue | Evaluated if condition is TRUE | Str or Num or Boolean | | iffalse | Evaluated if condition is FALSE | Str or Num or Boolean |

Return Value

| Type | Description | | --------------------------- | ----------------------------------------------------------------------- | | Str or Num or Boolean | The result of evaluating the contents of either if_true or if_false |

Example

dala `IF(TRUE, "Hello", "World") -> "World"`

MULTIPLY(a, b) -> Num

Description

Multiplies the arguments.

Arguments

| Name | Description | Type | | ---- | ------------------- | ----- | | a | The first argument | Num | | b | The second argument | Num |

Return Value

| Type | Description | | ----- | ------------------------- | | Num | The multiplication result |

Example

dala MULTIPLY(5, 2) -> 10

SUBTRACT(a, b) -> Num

Description

Subtract the second argument from the first one.

Arguments

This function takes one or more arguments.

| Name | Description | Type | | ---- | ------------------- | ----- | | a | The first argument | Num | | b | The second argument | Num |

Return Value

| Type | Description | | ----- | ---------------------- | | Num | The subtraction result |

Example

dala SUBTRACT(1, 2) -> -1

SUM(a, b, c, ...) -> Num

Description

Sums all the arguments together.

Arguments

This function takes one or more arguments.

| Name | Description | Type | | ---- | --------------------------------------- | ----- | | a | The first number to sum | Num | | b | The second number to sum (optional) | Num | | ... | The rest of the numbers to sum (option) | Num |

Return Value

| Type | Description | | ----- | ----------------------- | | Num | All arguments summed up |

Example

dala SUM(1, 2, 3, 4, 5) -> 15

UPPER(a) -> Str

Description

Converts the string to upper case.

Arguments

Non Str arguments will be implictly converted to Str, before being concatenated.

| Name | Description | Type | | ---- | ------------------- | --------------------------- | | a | The string to upper | Str or Num or Boolean |

Return Value

| Type | Description | | ----- | ------------------ | | Str | The upper case str |

Example

dala UPPER("Hello World") -> "HELLO WORLD"