LINUX.ORG.RU

История изменений

Исправление Den_Zurin, (текущая версия) :

Почему? Из-за синтаксиса? В моем языке будет выглядеть так:

type List[T] = case {
  Empty
  Node(value: T, next: List[T])
}

Сам pattern matching (ненужные имена можно заменять на _ ):

def List[T].sort() = case self {
  Empty -> Empty
  Node(v, n) -> n.filter(x -> x < v).sort() & v & n.filter(x -> x >= v).sort()
}

И будет разворачиваться в приведенный код на C.

Не нравятся эти if … else if…, вариантов может быть много, и хотелось бы O(1) вместо кучи проверок.

Исправление Den_Zurin, :

Почему? Из-за синтаксиса? В моем языке будет выглядеть так:

type VList[T] = case {
  Empty
  Node(value: T, next: List[T])
}

Сам pattern matching (ненужные имена можно заменять на _):

def TList[T].sort() = case self {
  Empty -> Empty
  Node(v, n) -> n.filter(x -> x < v).sort() & v & n.filter(x -> x >= v).sort()
}

И будет разворачиваться в приведенный код на C.

Не нравятся эти if … else if…, вариантов может быть много, и хотелось бы O(1) вместо кучи проверок.

Исходная версия Den_Zurin, :

Почему? Из-за синтаксиса? В моем языке будет выглядеть так:

type VList[T] = case {
  Empty
  Node(value: T, next: List[T])
}

Сам pattern matching (ненужные имена можно заменять на _):

def TList[T].sort() = case self {
  Empty -> EMPTY
  Node(v, n) -> n.filter(x -> x < v).sort() & v & n.filter(x -> x >= v).sort()
}

И будет разворачиваться в приведенный код на C.

Не нравятся эти if … else if…, вариантов может быть много, и хотелось бы O(1) вместо кучи проверок.