The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Гвидо ван Россум предложил включить в Python операторы для сопоставления с образцом, opennews (??), 28-Июн-20, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


18. "Гвидо ван Россум предложил включить в Python операторы для с..."  +2 +/
Сообщение от Аноним (18), 28-Июн-20, 11:29 
Почему просто switch не добавить? Если оно выглядит как switch, крякает как switch, то это switch.
Назвав конструкцию match, они и провоцируют вопрос, заданный выше, про регулярки.
Ответить | Правка | Наверх | Cообщить модератору

21. "Гвидо ван Россум предложил включить в Python операторы для с..."  +1 +/
Сообщение от Аноним (19), 28-Июн-20, 11:40 
Тоже сначала подумал, что наконец-то оператор регулярок сделали... Ан нет, сделали по пи... по питоновски, "никакулюдей", "яойсобенная".
Ответить | Правка | Наверх | Cообщить модератору

22. "Гвидо ван Россум предложил включить в Python операторы для с..."  +/
Сообщение от n00by (ok), 28-Июн-20, 11:41 
Вот настоящий match.


let eq_rat cr =
  match cr with
     ((_,0),(_,0)) ->  true
   | ((_,0),_) ->  false
   | (_,(_,0)) ->  false
   | ((n1,1), (n2,1)) when n1 = n2 -> true
   | ((n1,d1), (n2,d2)) when ((n1 * d2) = (n2 * d1)) -> true
   | _ -> false;;


let char_discriminate c =
  match c with
       'a' | 'e' | 'i' | 'o' | 'u' | 'y'
     | 'A' | 'E' | 'I' | 'O' | 'U' | 'Y'  -> "Vowel"
     | 'a'..'z' | 'A'..'Z' -> "Consonant"
     | '0'..'9' -> "Digit"
     |   _ -> "Other" ;;

https://caml.inria.fr/pub/docs/oreilly-book/html/book-ora016...
Ответить | Правка | К родителю #18 | Наверх | Cообщить модератору

28. "Гвидо ван Россум предложил включить в Python операторы для с..."  +2 +/
Сообщение от Урри (?), 28-Июн-20, 11:58 
На тридцати языках: https://rosettacode.org/wiki/Pattern_matching
Ответить | Правка | Наверх | Cообщить модератору

32. "Гвидо ван Россум предложил включить в Python операторы для с..."  +1 +/
Сообщение от n00by (ok), 28-Июн-20, 12:30 
> На тридцати языках: https://rosettacode.org/wiki/Pattern_matching

Пример с инстанциацией шаблонов просто шикарен, зря что ли Александреску ушёл в D. :D

Полез в Википедию, был удивлён: в англоязычном варианте https://en.wikipedia.org/wiki/Pattern_matching
среди первых языков, где реализовано сопоставление я образцом (SNOBOL from 1962, Soviet language Refal from 1968 with tree-based pattern matching, SASL from 1976, NPL from 1977, and KRC from 1981)
указан РЕФАЛ, а в русскоязычном про него ничего нет (в РЕФАЛ через сопоставление реализуется вообще всё).

Ответить | Правка | Наверх | Cообщить модератору

25. "Гвидо ван Россум предложил включить в Python операторы для с..."  +1 +/
Сообщение от Аноним (24), 28-Июн-20, 11:46 
Крякает он как раз как match, судя по выражению "case Point(x, y) if x == y", такое никакой switch провернуть не сможет.
Ответить | Правка | К родителю #18 | Наверх | Cообщить модератору

26. "Гвидо ван Россум предложил включить в Python операторы для с..."  –1 +/
Сообщение от n00by (ok), 28-Июн-20, 11:49 
> Крякает он как раз как match, судя по выражению "case Point(x, y)
> if x == y", такое никакой switch провернуть не сможет.

Спасибо, проглядел if.

Ответить | Правка | Наверх | Cообщить модератору

131. "Гвидо ван Россум предложил включить в Python операторы для с..."  –1 +/
Сообщение от Аноним (131), 29-Июн-20, 09:47 
Это вообще синтаксический ад какой-то, честно говоря.
Для такого надо или ИЛИ пихать или не делать такое вообще.
Ответить | Правка | К родителю #25 | Наверх | Cообщить модератору

36. "Гвидо ван Россум предложил включить в Python операторы для с..."  +/
Сообщение от коржик (?), 28-Июн-20, 13:11 
> Если оно выглядит как switch, крякает как switch, то это switch.

Не совсем.

match это по идее выражение, оно возвращает один из подошедших вариантов,

switch - это как правило стейтмент (поправьте, как правильно говорить), который ничего не возвращает, еще и проваливается сверху-вниз если break не поставить.

Ответить | Правка | К родителю #18 | Наверх | Cообщить модератору

99. "Гвидо ван Россум предложил включить в Python операторы для с..."  +/
Сообщение от Александр (??), 28-Июн-20, 23:50 
Кстати, в каком-то языке я встречал возвращающий switch. Выглядело (условно) это как-то так:
int r = switch (op)
{
case '+': a + b;
case '-': a - b;
case '*': a * b;
case '/': a / b;
};
Ответить | Правка | Наверх | Cообщить модератору

116. "Гвидо ван Россум предложил включить в Python операторы для с..."  +/
Сообщение от коржик (?), 29-Июн-20, 06:51 
> Кстати, в каком-то языке я встречал возвращающий switch. Выглядело (условно) это как-то
> так:

c#8

public static T RecursiveExample<T>(IEnumerable<T> sequence) =>
    sequence switch
    {
        System.Array { Length : 0}       => default(T),
        System.Array { Length : 1} array => (T)array.GetValue(0),
        System.Array { Length : 2} array => (T)array.GetValue(1),
        System.Array array               => (T)array.GetValue(2),
        IList<T> list                    => list[2],
        IEnumerable<T> seq               => seq.Skip(2).First(),
    };

Ответить | Правка | Наверх | Cообщить модератору

125. "Гвидо ван Россум предложил включить в Python операторы для с..."  –1 +/
Сообщение от Аноним (19), 29-Июн-20, 08:56 
ужас какой-то... кто это использует?!
Ответить | Правка | Наверх | Cообщить модератору

135. "Гвидо ван Россум предложил включить в Python операторы для с..."  –1 +/
Сообщение от Аноним (135), 29-Июн-20, 10:37 
Прикол же, чисто демонстрационный. В реальности действительно приятная вещь... знакомая, по сути, всем любителям функционального программирования. ;)
Ответить | Правка | Наверх | Cообщить модератору

57. "Гвидо ван Россум предложил включить в Python операторы для с..."  +1 +/
Сообщение от myhand (ok), 28-Июн-20, 14:54 
> Почему просто switch не добавить?

Потому что это не switch.  Читайте pep.

> Назвав конструкцию match, они и провоцируют вопрос, заданный выше, про регулярки.

Да, существуют граждане, закомящееся с языком как-то по basic-english словарю и ключевым словам...

Но если делать язык в расчете на подобных, выражусь политкорректно, идиотов - получится язык для идиотов.

Ответить | Правка | К родителю #18 | Наверх | Cообщить модератору

76. "Гвидо ван Россум предложил включить в Python операторы для с..."  +/
Сообщение от Аноним (76), 28-Июн-20, 17:00 
Так уже получился.
Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру