Expand description

defines Expr (Expression, the minimum executing unit of Erg).

Structs

Application ex. Vec Int of Option Vec Int

DictはキーつきArray(型としては別物)

e.g. Data::{x = 1; y = 2}

デコレータは関数を返す関数オブジェクトならば何でも指定できる e.g. @(x -> x)

リテラルに実際の値が格納された構造体(定数畳み込み用) ArrayやDictはまた別に

e.g.

Once the default_value is set to Some, all subsequent values must be Some

e.g. {x; y; z} (syntax sugar of {x = x; y = y; z = z})

引数を取るならTypeでもSubr扱い

e.g. obj.0, obj.1

type_ascription ::= expr ‘:’ type

symbol as a left value

Enums

valid expression for an argument of polymorphic types 多相型の実引数として有効な式

Expression(式)

関数定義や無名関数で使えるパターン

represents a declaration of a variable

  • Array: [Int; 3], [Int, Ratio, Complex], etc.
  • Dict: [Str: Str], etc.
  • And (Intersection type): Add and Sub and Mul (== Num), etc.
  • Not (Diff type): Pos == Nat not {0}, etc.
  • Or (Union type): Int or None (== Option Int), etc.
  • Enum: {0, 1} (== Binary), etc.
  • Range: 1..12, 0.0<..1.0, etc.
  • Record: {.into_s: Self.() -> Str }, etc.
  • Subr: Int -> Int, Int => None, T.(X) -> Int, etc.
  • Functions

    Type Definitions

    type variables