Описание тега adhoc-polymorphism

Специальный полиморфизм - это разновидность полиморфизма, при которой полиморфные функции могут применяться к аргументам разных типов.
3 ответа

Есть ли способ получить специальный полиморфизм в Python?

Многие языки поддерживают специальный полиморфизм (перегрузка функций) из коробки. Однако, похоже, что Python отказался от этого. Тем не менее, я могу предположить, что может быть какая-то хитрость или библиотека, способная осуществить это в Python.…
16 окт '15 в 18:32
1 ответ

Не можете вызвать статически импортированную перегруженную функцию, если одна с другими параметрами определена локально?

У меня есть следующий простой код Java: A.java import static a.A1.*; import static a.A2.*; class Main { public static int g() {return 999;} static { System.out.println("f('a'): " + f('a')); System.out.println("f(): " + f()); //System.out.println("g(…
1 ответ

Способы заставить оператор `<` работать с пользовательскими типами

Я имею type 'a edge = {from: 'a; destination: 'a; weight: int} и я хочу иметь Printf.printf "%b\n" ( {from= 0; destination= 8; weight= 7} &lt; {from= 100; destination= 33; weight= -1} ) печатать правда поэтому я попробовал это let ( &lt; ) {weight= …
2 ответа

Хороший способ для преобразования между специальными полиморфными функциями и параметрическими полиморфными

Мне интересно, есть ли общие способы преобразования между специальными полиморфными функциями и параметрическими полиморфными. Другими словами, учитывая специальную полиморфную функцию, как реализовать ее параметрический аналог? а как же наоборот? п…
7 ответов

Вывод типа мешает ссылочной прозрачности

Какое точное обещание / гарантию предоставляет язык Haskell в отношении прозрачности ссылок? По крайней мере, в отчете на Haskell это понятие не упоминается. Рассмотрим выражение (7^7^7`mod`5`mod`2) И я хочу знать, равно ли это выражение 1. Для моей…
1 ответ

Можно ли моделировать классы на уровне типов с типами более высокого ранга?

У меня есть подключаемая программа проверки типов во время выполнения, которая поддерживает параметрический, но не специальный полиморфизм, потому что нет шага компиляции и информация о типе стирается, как только отключается средство проверки типов.…
1 ответ

Полиморфные нетуристические вызовы методов (adhoc polymorphism) в Java

Позвольте мне начать с примера. Скажи у меня есть аннотация Vehicle учебный класс. public abstract class Vehicle { public Vehicle() {} public abstract void ride(); } И занятия Car а также Bicycle которые наследуют от этого абстрактного класса. publi…
1 ответ

Определить полиморфный инфиксный оператор в ocaml

Мне нужно создать оператора - при наличии двух строк возвращается первая строка минус все символы второй строки. Например: "abcd"-"ad"="bc", При написании случайного кода я заметил, что если я назначу новую функцию - оператор я не могу использовать …
1 ответ

Специальный полиморфизм - типовые классы

Я посмотрел учебник по скалазу. По этой ссылке я понимаю следующий код: scala&gt; def sum[A](xs: List[A])(implicit m: Monoid[A]): A = xs.foldLeft(m.mzero)(m.mappend) sum: [A](xs: List[A])(implicit m: Monoid[A])A scala&gt; implicit val intMonoid = In…
31 авг '14 в 17:38
0 ответов

Как создать чисто функциональную специальную полиморфную линзу без какого-либо самоанализа?

Я адаптировал реализацию линз DrBoolean, чтобы она работала без самоанализа / набирания утки / опоры на идентичность прототипа. Вычисления должны определяться исключительно продолжениями и аргументами функций функций более высокого порядка. Я зашел …
2 ответа

Объявление "подкласса" в Haskell

У меня проблемы со следующим простым кодом в Haskell: import Prelude hiding (cycle). class ICycle a where cycle :: a -&gt; a instance ICycle [a] where cycle [] = [] cycle (x:xs) = xs ++ [x] instance ICycle Bool where cycle True = False cycle False =…
28 апр '15 в 23:23
1 ответ

Производные выражения и полиморфизм

Данный код для моей программы: class Hive { private: Bee* queen; Bee* worker; Bee* drone; public: Hive(); void activity(); ~Hive(); }; Инструкции по кодированию были предоставлены, и я должен добавить код. Мой конструктор, как закодированный, имеет …
19 авг '15 в 07:22
1 ответ

Разница между Ad-hoc полиморфизмом и параметрическим полиморфизмом в Scala

Итак, я искал документацию о главном разнице между parametric polymorphism а также adhoc-polymorphismНо у меня все еще есть некоторые сомнения. Например, такие методы, как head в коллекциях, явно параметрический полиморфизм, так как код, используемы…
2 ответа

F#: арифметический оператор и потеря полиморфизма (ограничение значения?)

Этот код не компилируется: let f = fun x y -&gt; x &lt;&lt;&lt; y // bit shift let g = fun x y -&gt; x &lt;&lt;&lt; y [&lt;EntryPoint&gt;] let main _ = printfn "%d" &lt;| f 1 10 printfn "%d" &lt;| f 1L 10 // error printfn "%d" &lt;| g 1L 10 0 (7,21)…
3 ответа

Полиморфизм в OCaml - специальный, параметрический, включение / подтип

У меня проблемы с пониманием различных типов полиморфизма, особенно в отношении OCaml. Я понимаю, что полиморфизм допускает несколько типов в OCaml, обозначаемых как 'a, но я не понимаю, что такое различные типы полиморфизма.Если бы кто-то мог дать …
3 ответа

Как мне поместить StrLn в Data.ByteString.Lazy.Internal.ByteString?

Я использую encode (Тип Haskell через JSON в строку): import GHC.Generics import Data.Aeson Строка есть (согласно сообщению об ошибке от компилятора): Data.ByteString.Lazy.Internal.ByteString, Как мне поставить StrLn это? теоретически То, что я ищу,…
13 фев '15 в 12:49
3 ответа

Когда мне следует определять полиморфные функции по классам типов или какими-либо другими способами?

Я пытаюсь выяснить назначение класса типов, и что еще есть, если не использовать тип класса. Является ли класс типов способом определения полиморфных функций? Является ли класс типов единственным способом определения полиморфных функций? Например: c…
1 ответ

Как выразить смешанную специальную и параметрическую полиморфность в машинописи?

Я не уверен, что я сейчас описываю квесты в заголовке. То, что я пытаюсь спросить, вытекает из следующего требования. Я пытаюсь сделать реферат для состояний конечных автоматов и приходит со следующим определением (в машинописи) interface IState { s…
1 ответ

Принадлежит ли интерфейс специальному полиморфизму (то есть перегрузке) или полиморфизму подтипа?

https://wiki.haskell.org/Polymorphism говорит Специальный полиморфизм относится к случаю, когда значение может принимать любой из нескольких типов, потому что ему или используемому значению было дано отдельное определение для каждого из этих типов.…
1 ответ

Какое понятие в теории категорий можно использовать для представления класса типов?

На языке программирования Haskell, согласно https://en.wikibooks.org/wiki/Haskell/Category_theory 59.2.2 Перевод категоричных понятий на Хаскель Мы работаем в категории Hask и его подкатегории. Объекты являются типами. Морфизмы - это функции. Вещи, …