Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
2 / 1 / 1
Регистрация: 07.11.2022
Сообщений: 4
1

Реализация шаблонов

07.11.2022, 23:48. Показов 276. Ответов 0

Author24 — интернет-сервис помощи студентам
Надо сделать на Python что-то +- похожее на шаблоны в языке Wolfram

Есть класс my, наследован от tuple (я убрал ненужный код)

Python
1
2
3
4
5
6
7
8
9
class my(tuple):
 
    def __new__(cls, head, *args, _options: dict | None = None):
        self = tuple.__new__(cls, (head, *args))
 
        return self
 
    def __match__(pattern, obj):
        ...
Все выражения есть экземпляры этого класса.

Надо написать код метода __match__(pattern, obj), который, рассматривая данный объект как шаблон, говорит соответствует ли объект obj этому шаблону.
Есть объект (Blank,) который означает любое выражение.

то есть

(Some, 1, 2).__match__((Some, 1, 2)) вернет True
(Some, 1, 2).__match__((Some, (Blank,), 2)) вернет True
(Some, 1, 2).__match__((Some, 1, (Blank,))) вернет True
(Some, 1, 2).__match__((Some, 8, (Blank,))) вернет False

С этим проблем нет, проблемы появляются дальше.

Хотелось бы иметь именованные шаблоны, и чтобы __match__ возвращало не True/False, а словарь из имен шаблонов и выражений им соответствующих

Пусть такой именованный шаблон есть p = (Pattern, "имя", (Blank,)). Тогда, скажем, (Some, 1, 2).__match__((Some, p, 2)) вернет словарь {"имя": 1}

Другой пример, есть шаблон p = (Pattern, "x", (Plus, (Pattern, "a", (Blank)), 1)). Здесь x есть название шаблона, где к a прибавляется 1, на Wolfram это выглядело бы как x: a_ + 1.
Тогда (Some, 7, (Plus, t, 1)).__match__((Some, 7, p)) дало бы словарь {"x": (Plus, t, 1), "a": t}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.11.2022, 23:48
Ответы с готовыми решениями:

Как из шаблонов django обратиться к элементу на странице?
Доброго времени суток, объясню проблему на небольшом примере <div data="10"> <div> {{...

PyCharm при первом запуске нет выбора шаблонов
Добрый день, форумчане! Я начинающий в Python, установил Pycharm, однако при первоначальном...

Реализация шаблонов
Всем привет! Можно ли как-то реализовывать шаблонный класс в другом файле? то есть имеем...

Реализация пользовательских шаблонов
Доброго дня. Стоит задача по реализации пользовательских шаблонов (создание, редактирование,...

Реализация шаблонов underline_type и is_enum
Добрый вечер! Кто подскажет, как сделать шаблоны underline_type и is_enum? Смотрел type_traits,...

0
07.11.2022, 23:48
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.11.2022, 23:48
Помогаю со студенческими работами здесь

Реализация шаблонов свечных конфигураций
Всем привет! Есть задача реализовать шаблоны свечных конфигураций для тестирования. На входе у...

Реализация шаблонов класса в инлайн файле
Пытался написать шаблонны MyClass.h #pragma once #define MYCLASS template <typename T>...

Реализация шаблонов класса в инлайн файле
Пытался написать шаблонный класс, реализуя как обычно объявление класса в h файле и определение...

В разделе "редактор шаблонов" в таблице нет файлов шаблонов
Привет, помогите с проблемой в движке DLE, в разделе редактор шаблонов в таблице нет файлов шаблона...

Каталог шаблонов
Может кто подскажет ? Как-то раз попадалась на глаза программа, которая позволяла вести...

Обновление шаблонов
На работе вышел приказ обновить шаблоны в лотусе в ближайшее время. Мое познание (самостоятельное,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru