Values

A value is the result of evaluating an expression.

Value ::=
  | { (Name : Value),+ }              Record-value
  | ( Value,+ )                        Tuple-value
  | fun ( (Pattern : Type),+ ) : Expr  Lambda-value
  | Value? .. (=? Value)?              Range-value
  | Path                               Item-value
  | Path ( Value )                     Enum-value
  | Literal

Literal ::=
  | true | false        Literal boolean
  | unit                Literal unit
  | '[^']'              Literal character
  | "[^"]*"             Literal string
  | [1-9][0-9]*Name?     Literal integer with optional suffix
  | [1-9][0-9]*.[0-9]*Name? Literal floating point with optional suffix
  | DateTime
  | Duration

DateTime ::=
  | [0-9]+-[0-9]+-[0-9]+                                         Date
  | [0-9]+-[0-9]+-[0-9]+T[0-9]+:[0-9]+:[0-9]+                    Date + Time
  | [0-9]+-[0-9]+-[0-9]+T[0-9]+:[0-9]+:[0-9]+(+|-)[0-9]+:[0-9]+  Date + Time + Zone

Duration ::= 
  | [0-9]+ns  Nanosecond
  | [0-9]+us  Microsecond
  | [0-9]+ms  Millisecond
  | [0-9]+s   Second
  | [0-9]+m   Minute
  | [0-9]+h   Hour
  | [0-9]+d   Day
  | [0-9]+w   Week

Examples

Some examples of different values:

{{#include ../../../arc-lang/examples/values.arc:example}}