Re[9]: ФП и абстракция списка
От: BulatZiganshin  
Дата: 06.06.07 11:08
Оценка:
А>>в сигнатуру он как раз входит, но для выбора реализации метода не используется. и это ограничение возникло не с бухты-барахты, оно является следствием используемой в ООП реализации классов. информация о типе содержится только в самих объектах, поэтому невозможно выбрать между двумя функциями, различающимися только возвращаемым типом. в отличие от этого в реализации type classes информация о типе передаётся отдельным аргументом, поэтому такое ограничение отсутствует. надеюсь в третий (или четвёртый?) раз объяснять одно и то же не придётся?

К>Думаю, что дело в другом. У С++, как у наследника С, есть развитая система неявного приведения типов. Которая катастрофически усложняет вывод типа от результата к аргументам.


не в большей степени, чем обратный вывод

что действительно является приницпиальным ограничением, так это передача словаря методов класса (VMT) как части объекта. нет объекта — нет и VMT. в type classes она передаётся отдельно, поэтому можно сделать что-нибудь в духе

class C a where
  nul :: a
instance C Int where
  nul = 0
main = print (nul + length [])


в C++ есть templates, которые ввиду их резолвинга во время компиляции не обладают этим ограничением, и насколько я понимаю, тоже отлично резолвятся в обе стороны
Люди, я люблю вас! Будьте бдительны!!!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.