Описание тега multimethod
1
ответ
Статическая (время компиляции / строго типизированная) поддержка множественной диспетчеризации в C#
Недавно я снова и снова использовал один и тот же шаблон в своем коде. По сути, это вариант шаблона посетителя, который я использую для преобразования ссылок на экземпляры базовых классов в производные. Этот подход требует много стандартного кода. В…
02 мар '12 в 23:02
1
ответ
Что такое "полиморфизм а-ля-карт" и как я могу извлечь из этого пользу?
В своем выступлении " Simple Made Easy" Рик Хикки рассказывает о "полиморфизме а-ля-карт" (около 30:00 в видео). В этом же контексте он также упоминает классы типов Хаскелла и мультиметоды Clojure (и протоколы). Поскольку я не очень знаком с этими к…
25 ноя '12 в 16:43
2
ответа
Остановка метода от вызова: после
Скажем, у меня есть настройки кода, как показано ниже (defgeneric move (ship destination)) (defmethod move (ship destination) ;; do some fuel calculation here ) (defmethod move :after ((ship ship) (dest station)) ;; do things specific to landing on …
18 авг '16 в 09:48
1
ответ
Как отправить мультиметод на примитивные типы?
Я хочу, чтобы моя программа работала по-разному между примитивными типами и их классами-обертками, например: (defmulti try-type class) (defmethod try-type Integer [arg] (println "Integer")) (defmethod try-type Integer/TYPE [arg] (println "int")) Но …
28 июл '12 в 16:47
1
ответ
Clojure - отправка по типу возврата? (Такой же выразительный, как классы типов Haskell)
Это вопрос о выразительности Clojure по сравнению с другими языками, такими как Haskell. Более широкая проблема - это решение проблемы выражения. Этот вопрос пришел к выводу, что в целом протоколы Clojure (и мультиметоды) были менее выразительными, …
30 мар '14 в 04:17
2
ответа
По каким причинам протоколы и мультиметоды в Clojure менее эффективны для полиморфизма, чем классы типов в Haskell?
В более широком смысле этот вопрос касается различных подходов к проблеме выражения. Идея состоит в том, что ваша программа представляет собой комбинацию типа данных и операций над ним. Мы хотим иметь возможность добавлять новые случаи без перекомпи…
26 фев '14 в 11:34
5
ответов
Являются ли функции изменчивыми в нескольких системах диспетчеризации?
Правильно ли я понял, что в (большинстве? Некоторых?) Языках с несколькими диспетчеризацией каждый метод добавляется в функцию в определенный момент времени выполнения программы. Можно ли тогда сделать вывод, что множественная диспетчеризация как фу…
18 ноя '16 в 09:01
1
ответ
Обход дерева векторов
Я хочу пройти через векторное дерево, которое представляет структуры данных сбоя: [:div {:class "special"} [:btn-grp '("Hello" "Hi")]] Затем я хочу отправить по ключевому слову вектора, если для ключевого слова был определен мультиметод, то он верне…
15 май '12 в 06:17
4
ответа
C++ мультиметоды и определение времени компиляции
У меня есть следующий код: class A{}; class B: public A{}; class C: public A{}; class MyVisitor { public: void visit(B*); void visit(C*); }; И тогда коллекция объектов A*, я хочу добиться следующего: 1) MyVisitor visitor; for(vector<A*>::itera…
29 авг '14 в 07:22
2
ответа
В Clojure, как я могу лучше разработать этот код, который должен быть полиморфным?
Я пишу эту программу, которая похожа на веб-сканер для онлайн-форумов. Для каждого форума, который я сканирую, мне нужно сделать одно и то же: авторизоваться найти доски найти сообщения найти постоянную ссылку на пост найти имя пользователя, который…
22 май '13 в 18:10
0
ответов
Внедрение мультиметодов CLOS и вспомогательных методов (совет)
В Common Lisp Object Standard (CLOS) встроены вспомогательные методы и multi-dispatch. Однако, как академическое упражнение, я хочу реализовать эти функции с нуля. В частности, я хочу получить советы:before,:after и:around и возможность многоадресно…
20 май '18 в 11:11
2
ответа
Что означает параметр retag в s/multi-spec?
Можете ли вы объяснить на примерах, как это retag влияние параметров multi-spec создание? я нахожу multi-spec документацию трудно переварить.
29 июл '17 в 22:11
1
ответ
Clojure multimethod, дающий неожиданный нулевой указатель
Мне трудно заставить мультиметоды в Clojure работать так, как я ожидал. Дистилляция моего кода выглядит следующим образом. (defn commandType [_ command] (:command-type command)) (defmulti testMulti commandType) (defmethod testMulti :one [game comman…
17 май '14 в 18:15
1
ответ
CLojure: функции высшего порядка против протоколов против мультиметодов
Есть много протоколов против сравнения мультиметодов, но почему бы не использовать функции более высокого порядка? Давайте рассмотрим пример: у нас есть некоторые данные (например, запись). И у нас есть методы сериализации и десериализации. Скажем, …
25 окт '14 в 15:08
1
ответ
Реализация мультиметода в отдельных файлах в другом пространстве имен
Я пытаюсь определить мультиметод и его реализацию в отдельном файле. Это выглядит примерно так: в файле 1 (ns thing.a.b) (defn dispatch-fn [x] x) (defmulti foo dispatch-fn) В файле 2 (ns thing.a.b.c (:require [thing.a.b :refer [foo]]) (defmethod foo…
12 июл '16 в 06:13
1
ответ
Перебирая аргументы макроса
Я пытаюсь написать макрос в Clojure, который позволяет оценивать ряд простых выражений "def". Я n00b, когда дело доходит до макросов. Идея в том, что (my-defs y1 1 y2 "taco") следует расширить до (do (def y1 1) (def y2 "taco")) Следующий код выполня…
05 сен '11 в 22:07
1
ответ
Упрощение идиоматических выражений в Clojure
Вдохновленный этим прекрасным постом, я хотел реализовать простой упрощающий выражения в Clojure, используя алгоритм, использованный в этом посте. В посте приводятся примеры реализаций в F#, Scala, Haskell, C++ и Julia, которые выглядят довольно эле…
09 авг '15 в 11:15
1
ответ
Перезагрузка мультиметодов через Slime
У меня возникают проблемы при перезагрузке мультиметодов при разработке в Emacs с использованием реплик Slime. Переопределение defmethod формы работают нормально, но если я изменю функцию диспетчеризации, я не смогу перезагрузить defmulti форма. Я д…
20 фев '12 в 21:16
3
ответа
Могу ли я использовать мультиметоды Clojure только для классов Java?
Я немного озадачен тем, могу ли я использовать мультиметоды clojure только на структурах clojure, представленных Java-классами, или я могу основывать мультиметоды для диспетчеризации на структурах или других свойствах?
01 янв '11 в 20:06
1
ответ
Могу ли я отправить mutli-метод для обоих типов и свойств в Clojure?
У меня в приложении Clojure есть метод визуализации, который может предположительно отображать любую часть моего приложения. Проблема, с которой я столкнулся, состоит в том, что некоторые вещи в моем приложении - это классы Java, а некоторые - хеш-к…
02 янв '11 в 08:57