LINUX.ORG.RU

Вопрос по параметрическому полиморфизму.

 ,


0

1

Я вот думаю, если у нас есть обычный полиморфизм (например, полиморфизм подтипов), в стиле Foo.bar, SubFoo.bar, AnotherType.bar, у нас автоматом будет и параметрический, правильно? Ведь если функция принимает на вход несколько типов, а все эти типы имеют одноименные слоты, реализующие анологичный функционал, то функция будет работать с любым из этих типов искаропки.

например

Sequence do(
  sum := getSlot("..")
)
Number do(
  sum := getSlot("+")
)

test := method(parameter, parameter sum(parameter)) // параметрически-полиморфная функция

test(1) println // 2
test("1") println // 11
ну, о типобезопасности тут речи, разумеется, не идет, а вообще.



Последнее исправление: callbackhell (всего исправлений: 3)

ты открыл для себя monkey patching и утиную типизацию? Правильной дорой идешь, прямо труЪ-ООП вэй.

nguseff
()
Ответ на: комментарий от nguseff

манки-патчинг тут не при чем, это просто пример. Мы и без него можем написать аналогичный код. К тому же там просто алиасы.

callbackhell
() автор топика
Ответ на: комментарий от nguseff

Да и утиная типизция непосредственного отношения к теме не имеет. Че-то ты в лужу пернул, непонятно вообще о чем, и к чему.

callbackhell
() автор топика
Ответ на: комментарий от callbackhell

в чем смысл темы?

Я вот думаю, если у нас есть обычный полиморфизм (например, полиморфизм подтипов), в стиле Foo.bar, SubFoo.bar, AnotherType.bar, у нас автоматом будет и параметрический, правильно?

нет, не будет. Только в случае утиной типизации. Ты к чему-то ведешь?

nguseff
()
Ответ на: комментарий от nguseff

Только в случае утиной типизации

А что, утиная типизация отменяет полиформизм подтипов?

Ты к чему-то ведешь?

Я просто задал вопрос.

callbackhell
() автор топика

Ты бредишь как обычно. Или троллишь. Сам написал про полиморфизм подтипов, а потом поделил на ноль. То, что ты изобразил работает только для динамической типизации.

anonymous
()
Ответ на: комментарий от anonymous

Ну, динамическая типизация что, отменяет полиморфизм подтипов?

callbackhell
() автор топика
Ответ на: комментарий от callbackhell

А что, утиная типизация отменяет полиформизм подтипов?

Блджад! Конечно отменяет. В динамике всем похер на твои иерархии, достаточно чтобы сигнатуры совпадали. Полиморфизм подтипов - это такая лазейка для огороженных недоязычков вроде жабы. Типа мы тут вас связали по рукам и ногам, но вот мизинец не тронули, ликуйте! И распиарили этот убогий полиморфизм на весь мир.

anonymous
()
Ответ на: комментарий от anonymous

Конечно отменяет. В динамике всем похер на твои иерархии, достаточно чтобы сигнатуры совпадали.

Это само сабой, но ведь никто не заставляет ломать иерархии. Не ломай и будет тебе полиморфизм подтипов. Просто он опционален, это не значит что его не может быть.

callbackhell
() автор топика
Ответ на: комментарий от anonymous

Типоебы негодуют.

вот и раскрылся смысл. Анонимус опять создал тему и сам собой разговаривает. Тупо вбрасывать уже не получается, сразу банят?

nguseff
()
Ответ на: комментарий от nguseff

Интуиция тебя подвела, это был не я, просто другой умный человек:), если не веришь, можешь спросить у модераторов.

callbackhell
() автор топика
Ответ на: комментарий от nguseff

Я кстати, уже давно сам с собой не разговариваю, модераторы палят, и выкладывают в тот же тред. Никакой анонимности:)

callbackhell
() автор топика
Ответ на: комментарий от callbackhell

Это они пока ещё твоему психиатру не сообщили.

hateyoufeel ★★★★★
()

В C++ есть ad-hoc полиморфизм (который ты называешь «обычным»), но нет параметрического (есть только слабая имитация на макросах-шаблонах).

Miguel ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.