Здравствуйте, lomeo, Вы писали:
L>А если мы делаем print(foobar("Громозека — грубиян и невоспитанный тип"))?
Тут вообще все банально. Если тип можно определить в принципе, то он выводится. Если нет, компилятор говорит, что у мего неоднозначность.
Вот только это никак не завист от того на каком уровне делается вывод типов.
Кстати, еще надо понимать, что Немерловый алгоритм вывода типов не выводит полиморфные типы. По этому ему несколько проще.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, lomeo, Вы писали:
VD>>Самое смешное, что лично я хотел бы чтобы ты был прав, так как не вижу смысла в выводе типов выше тел методов, L>Ты не пробовал, вот и не видишь. VD>>но вижу приемущества от такого ограничения. L>Ага! Так это, значит, всё таки ограничение?
а этот на нее ссылается. Я понимаю, когда защищают сильные стороны любимого дитяти, понимая, что для этого приходится жертвовать чем-то еще. Но наезжать на Хаскелл с точки зрения type machinery, приводя в пример немерле, (и упоминая, что "Немерловый алгоритм вывода типов не выводит полиморфные типы") — это за гранью.
Здравствуйте, lomeo, Вы писали:
VD>>Самое смешное, что лично я хотел бы чтобы ты был прав, так как не вижу смысла в выводе типов выше тел методов,
L>Ты не пробовал, вот и не видишь.
Ну, тебе виднее. Как говорится, с очевидцами не спорят.
VD>>но вижу приемущества от такого ограничения.
L>Ага! Так это, значит, всё таки ограничение?
Ты точно здоров?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>>>Самое смешное, что лично я хотел бы чтобы ты был прав, так как не вижу смысла в выводе типов выше тел методов,
L>>Ты не пробовал, вот и не видишь.
VD>Ну, тебе виднее. Как говорится, с очевидцами не спорят.
Что значит мне виднее? Ты же сам это признал.
VD>>>но вижу приемущества от такого ограничения.
L>>Ага! Так это, значит, всё таки ограничение?
VD>Ты точно здоров?
а этот на нее ссылается. Я понимаю, когда защищают сильные стороны любимого дитяти, понимая, что для этого приходится жертвовать чем-то еще. Но наезжать на Хаскелл с точки зрения type machinery, приводя в пример немерле, (и упоминая, что "Немерловый алгоритм вывода типов не выводит полиморфные типы") — это за гранью.
За чьей? За гранью фанатов хаскеля? Ой, не смешите мои лямбды
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, lomeo, Вы писали:
VD>>Ну, тебе виднее. Как говорится, с очевидцами не спорят.
L>Что значит мне виднее? Ты же сам это признал.
Где? Нет, ты точно не здоров. Я пробовал программировать на разных языках. В том числе с выводом типов (ОКамл, Хаскель).
VD>>>>но вижу приемущества от такого ограничения.
L>>>Ага! Так это, значит, всё таки ограничение?
VD>>Ты точно здоров?
L>Нечего сказать?
На бред? Не, нечего. Я не знаю как и что ответить человеку который в использование его терминалогии пытается разглядеть "признание" чего-то там.
Понимаеш ли. Ограничение подразумевает, что его отсуствие — это однозначное добро. Иначе можно говорить только о выборе рекоторого решения. Конечно любое решение в каком-то смысле ограничение. Ну, скажем если я решаю писать по русски, то ограничиваю себя символами русского алфавита, а решив писать на английском, английского. Но имеет ли смысл тут говорить об ограничениях? Точно так же решая ограничить вывод типов телами методов, я как дизайнер ЯП, добиваюсь какой-то цели (облегчаю поиск ошибок компиляции и т.п.). Напротив, если я выбираю полный вывод типов, то я автоматически ограничиваю возможности компилятора по диагностике ошибок и т.п. Так что какое бы я не принял решение все равно будет ограничение. Такие ограничения бессысленно рассматривать как ограниченность, что ты и пыташся делать. Это выбор дизайнеров языка. Компромис. Он достигает одной цели жертвуя другой. Задача дизайнера сделать правильный выбор, а не уменьшить ограничения. По этому вопрос "почему ввели такое ограничение" априори некорректен. Темболее глупо говорить о проблемах реализации и темболее лени или еще чем-то там.
Но тебе же важно не понимание вопроса, а поиск фатальных недостатков. Ты принципиально не объективен. По этому серьезно разговаривать с тобой нельзя. Ты все равно все воспримешь в извращенном виде.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Он то говорит о том в чем разобрался. А ты просто несешь чущь о вещах в которых не разобрался. Самоуверенно, нагло и без единого аргумента.
Запонми на будущее одну вещь. Иногда решения выходят за рамки нашего понимаиния. Чтобы понять их нужно взглянуть на вещи по другому и учесть множество предпосылок выпадающих из твоего ведения. В таких случаях проще всего назвать все чушью и далее начать обличительную речь. Вот только это не конструктивный и гиблый путь
Что до "фанатов", то IT тебе ответил очень точно. Это за твоей гранью, так как ты и есть фанат неспособный воспринимать чужие аргументы.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Он то говорит о том в чем разобрался. А ты просто несешь чущь о вещах в которых не разобрался. Самоуверенно, нагло и без единого аргумента.
В чем он разобрался? Как из строки целое вычитать? Какие здесь могут быть аргументы?
VD>Запонми на будущее одну вещь. Иногда решения выходят за рамки нашего понимаиния. Чтобы понять их нужно взглянуть на вещи по другому и учесть множество предпосылок выпадающих из твоего ведения. В таких случаях проще всего назвать все чушью и далее начать обличительную речь. Вот только это не конструктивный и гиблый путь
Здравствуйте, awson, Вы писали:
VD>>Он то говорит о том в чем разобрался. А ты просто несешь чущь о вещах в которых не разобрался. Самоуверенно, нагло и без единого аргумента.
A>В чем он разобрался?
В том как работает алгоритм вывода типов в Nemerle. Причем разбирался под отладчиком и пробвал кое что менять. В частности отключал провекру запрещающую различать фукнции по их возравщаемому значению и убеждался, что вывод типов все равно работает.
A>Как из строки целое вычитать?
А надо?
A>Какие здесь могут быть аргументы?
У тебя, то кроме слов "чущь" других то нет. Я вообще не понимаю, как можно прочтя статью содержащую формальное обоснование алгоритма "споирь" и кидаться словами вроде "чушь".
VD>>Запонми на будущее одну вещь. Иногда решения выходят за рамки нашего понимаиния. Чтобы понять их нужно взглянуть на вещи по другому и учесть множество предпосылок выпадающих из твоего ведения. В таких случаях проще всего назвать все чушью и далее начать обличительную речь. Вот только это не конструктивный и гиблый путь
A>Вы программы тоже с помощью заклинаний пишете?
Мои порогаммы можно наблюать и пробовать их использовать. А вот ты пока что тут только языком чешишь. Так что не надо здесь про заглинания.
Прочти статью еще раз и попытайся понять принцип алгоритма. В общем-то он не так и сложен. По стути там выявляются прецеденты использования фукнций и делается заключение о их непротиворечивости. Если есть неопределенность сообщяется об ошибке. Никаких не приодалимых проблем при этом не возинкает. И локальность или глобальность вывоад типов ни на что не влияет. Неопределенность может быть разрешена путет аннотации типов. Например, метод Console.WriteLine() сильно перегружен и его прямое использование не всегда получается неоднозначным. Однако в большинстве слеучаев проблем не возникает, так как само использование указывает какй из вариантов перегрузки использовать. Ну, а если все же остается неоднозначность компилятор об этом рассказывает.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>В том как работает алгоритм вывода типов в Nemerle. Причем разбирался под отладчиком и пробвал кое что менять. В частности отключал провекру запрещающую различать фукнции по их возравщаемому значению и убеждался, что вывод типов все равно работает.
Да и потом, как показывает мой простейший пример, даже локального вывода в чистом виде не достаточно. Нужно что-то еще, типа дополнительных правил выбора инстансов, либо от ворот поворот компилятором.
Например, в Хаскелле в typeclasses тоже можно активировать неразрешимые и некогерентные инстансы.
Здравствуйте, awson, Вы писали:
A>Хм, кажется, я, наконец, понял в чем дело. Товарищ просто не знает, что такое композиция и читает ее в обратном порядке.
Не угадал.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
FR>Нужен результат: например вернуть из функции N (разнотиповых) переменных, есть несколько альтернатив как это сделать, в языке подерживающем туплы, это элементарно просто вернуть тупл. В языке не подерживающем туплы или завести структуру из этих N переменных (единственное предназначение которой только возврат этих переменных) или что еще хуже завести у функции out параметры. Тупл здесь средство упростить и очистить от мусора код и ничего больше.
Здравствуйте, AndrewVK, Вы писали:
AVK>А дальше? Как заставить tuple1.GetType() == tuple2.GetType() вернуть true, если tuple1 и tuple2 совместимы по сигнатуре, но при этом физически это два разных класса? Тут хак в рантайме нужен типа делегатов, бо это duck typing в чистом виде. Ну или работать через TransparentProxy, но производительность такого решения ты наверное представляешь.
Хм... а централизованно динамически генерить новые классы на каждую сигнатуру кортежа не получится?
Здравствуйте, VladD2, Вы писали:
VD>Потому что дизайнеры C# 3.0 решили сделать именованные поля у неименованных типов. Мол это привычнее обывателям и больше защищает от ошибок (ведь в кортеже можно легко перепутать значения местами, если они имеют один тип). Но такой тип уже дженериком не опишишь. Компилятору приходится каждый раз порождать новый (скрытый) класс. Ну, а так как разные библиотеки порождают разные (физически) классы, то они не совместимы. Далее думаю ясно.
А если имена протаскивать как параметризаторы? Каким-нибудь чудесным образом.
Hi VladD2
AV>>Нда. А мужики-то о java и не знали. Не так уж много у них спецов по java есть в штате. Что делать с остальными? Переучивать? Увольнять и набирать других?
V>Ты говорил о текучести кадров и проблеме поиска новых. Ты уж определись, а то это больше похоже на поиск отмазок.
И текучка и текущий состав учитывались.
Даже если остановиться на текучке. Ты берешь человека. Наш клиент предпочитает брать людей, которые знают как решить ту или иную задачу. И им по барабану, знает принимаемый java или нет. А если взять человека, который не знает java и начать его переучивать, то он на достаточно долгий срок выпадает. И получилось дешевле добавить поддержку еще одного языка, чем его переучивать.
И вообще, давай опустим причины такого выбора. Причины были объективны. Просто я не все могу рассказать из-за NDA. Прими это за факт.
AV>>Риск оправдался.
V>Это будет видно когда проект закончится успехом.
На базе этого сервака уже работает один проект. Второй находится на стадии тестирования. Так что успех уже есть. Это факт. А факты, как известно, вещь упрямая.
V>Что до отсуствия у тебя задач... У тебя не задачи отсуствуют. У тебя решения заранее предопределены. Тебе их даже обдумывать не надо.
Опять выдаешь свои измышления не зная поставленной задачи. Это не так. Затада была поставлена так, что были большие возможности для маневра (хотя список поддерживаемых языков устанавливает закзачик). Просто в результате анализа совместно с аналитиками заказчика были приняты те или иные решения. Далее, у нас уже создавалась архитектура приложения. Причем полностью. И заказчик принял ее полностью (после некоторых совместных консультаций). И сейчас практически все решения принимаются у нас (кроме требуемой функциональности). Они только утверждаются заказчиком.
V>Так что ОКамл тебе тоже будет бесполезен. Хотя... возможно это будет началом перестройки мышления.
Да ну? Функционал постоянно развивается. Поэтому постоянно надо что-то добавлять. Да, сейчас этим занимается другой человек. Но если я буду знать OCaml, то я смогу, в случае необходимости, помочь ему. Или даже, в крайнем случае, заменить его.
А что мне даст изучение Nemerle в моей ситуации? Ты так и не ответил на этот вопрос. Интересно дождусь я прямого ответа, а не отмазок.
Здравствуйте, OCTAGRAM, Вы писали:
OCT>Хм... а централизованно динамически генерить новые классы на каждую сигнатуру кортежа не получится?
Нет конечно. Там же уже в сборках все статически слинковано будет, с указанием точного идентификатора метаданных. Здесь нужен именно что контракт-хамелеон, а такое в верифицируемом IL можно провернуть пока что только с помощью TP.
... << RSDN@Home 1.2.0 alpha rev. 675 on Windows Vista 6.0.6000.0>>