История изменений
Исправление
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) вместо кучи проверок.