Re[13]: ФП и абстракция списка
От: awson  
Дата: 02.06.07 22:57
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Для этого достаточно перегрузки. Метод Console.WriteLine так и делает.

VD>Но вообще для этой задачи какраз метапрограммирование подходит хорошо. Но ты же говорил про вызов метода, а не про проверку соответствия списка параметров некому шаблону.

Не знаю Немерле, проверять лень.

Я не говорил, что метапрограммирование заключается в вызове метода, я говорил о том, что можно так заметопрограммировать например (есть много и других примеров) функцию foo от любого числа параметров любого типа, что ее вызов произойдет без синтаксического оверхеда.

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

И это только один из многочисленных вариантов использования классов типов для метапрограммирования. Например, в typechecker полностью вкладывается арифметика (все это есть по ссылкам), далее везде.
Re[15]: Олег Киселёв
От: BulatZiganshin  
Дата: 03.06.07 06:00
Оценка:
Здравствуйте, lomeo, Вы писали:

L>Здравствуйте, geniepro, Вы писали:


G>>Впечатляет...

G>>А что за limitations of typeclasses имеются в виду?

L>ХЗ. Язык не тьюринг полон? Я просто не помню как чёрчевские нумералы делятся.


рполон, но неудобен, там же написано — ugly code. по сравнению с тьюринг-машиной он даже в чём-то проще
Люди, я люблю вас! Будьте бдительны!!!
Re[16]: Олег Киселёв
От: deniok Россия  
Дата: 03.06.07 08:27
Оценка:
Здравствуйте, BulatZiganshin, Вы писали:

BZ>Здравствуйте, lomeo, Вы писали:


L>>Здравствуйте, geniepro, Вы писали:


G>>>Впечатляет...

G>>>А что за limitations of typeclasses имеются в виду?

L>>ХЗ. Язык не тьюринг полон? Я просто не помню как чёрчевские нумералы делятся.


BZ>рполон, но неудобен, там же написано — ugly code. по сравнению с тьюринг-машиной он даже в чём-то проще


Его фундепсы полным делают? Или достаточно мультипараметрических классов типов? Потому что у Haskell98 система типов, вроде, не полная.
Re[17]: Олег Киселёв
От: deniok Россия  
Дата: 03.06.07 08:46
Оценка:
Здравствуйте, deniok, Вы писали:

BZ>>рполон, но неудобен, там же написано — ugly code. по сравнению с тьюринг-машиной он даже в чём-то проще


D>Его фундепсы полным делают? Или достаточно мультипараметрических классов типов? Потому что у Haskell98 система типов, вроде, не полная.


Кстати, задачка (которую и полноту докажет )

Реализовать на типах S и K. (Можно и лямбду)
Re[5]: ФП и абстракция списка
От: Аноним  
Дата: 03.06.07 10:02
Оценка:
Здравствуйте, VladD2, Вы писали:

А>>Ну а в лиспе есть дженерики — позволяют "вызывать" методы, определённые вообще для чего угодно...


VD>Ну, вызови для массива car/cdr, если так.


И кто мне запретит в пределах моего модуля переопределить их как дженерики?

И опять же — тебе внешний вид, или результат?
Re[3]: ФП и абстракция списка
От: Аноним  
Дата: 03.06.07 10:09
Оценка: +1
Здравствуйте, VladD2, Вы писали:

А>>Не совсем понятно, что именно тебе "надо"


VD>Если очень сило себе это внушать, то возможно. Похже, что остальные поняли все отлично.


Только судя по ответам каждый понял своё...

А>>На списках можно сделать почти всё (см. SICP).


VD>"Почти" это уже само по себе смешно.


Я намеренно написал "почти", дабы ко мне не приставали с "квантором всеобщности"

VD>Да и вопрос не в этом. Скажем действительно все можно выразить буквально 5-ю ассемблерными инструкциями где даже call в общем-то не нужен. Но речь то и дет об абстрации.


В лиспе мало средств для построения абстракций?

А>>"Чистую парадигму" ФП на чём излагать?


VD>Меня больше занимает другой вопрос. Имеет ли смысл вообще рассматривать ФП как отдельную прарадигму. Похоже, что в чистом виде она ущербна, и имеет смысл только в купе с некой иделогией типов которая в чистом виде имеется только в ООП.


А с какого ты "идеологию типов" наделил характеристикой "принадлжеит ООП"?
Re[13]: ФП и абстракция списка
От: Аноним  
Дата: 03.06.07 10:38
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Есть стандарты де факто. А Лисп хоть формально стандартизирован, но я не смог скопилировать половину приперов на разных компиляторах которые казалось бы поддерживали стандарт CL.


Хух, а примеры полностью соответствовали стандарту?

VD>Наличие единой реализации — это намного лучше стадарта. Отчасти потому Руби и Питон во всю использются на практике, а Лисп при пенесометрии.


Ложь... Раньше я был о Вас лучшего мнения...
Re[4]: ФП и абстракция списка
От: geniepro http://geniepro.livejournal.com/
Дата: 03.06.07 13:34
Оценка:
Здравствуйте, VladD2, Вы писали:

А>> На списках можно сделать почти всё (см. SICP).


VD> "Почти" это уже само по себе смешно.


Да не почти, а просто всё — вопрос желания и фантазии.
В самой первой версии Лиспа Маккарти даже арифметику сделал на списках, без чисел. Типа, 0 — пустой список, 1 — список из одного элемента и т.д.
Другое дело, что это может быть не практично в реальном использовании...
Re[16]: Олег Киселёв
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 03.06.07 14:29
Оценка:
Здравствуйте, BulatZiganshin, Вы писали:

L>>ХЗ. Язык не тьюринг полон? Я просто не помню как чёрчевские нумералы делятся.


BZ>рполон, но неудобен, там же написано — ugly code. по сравнению с тьюринг-машиной он даже в чём-то проще


Как же он полон, если вывод типов всегда должен завершаться?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[17]: Олег Киселёв
От: awson  
Дата: 03.06.07 15:26
Оценка: 10 (1)
Здравствуйте, lomeo, Вы писали:

L>Как же он полон, если вывод типов всегда должен завершаться?

-fallow-undecidable-instances ?
Re[12]: ФП и абстракция списка
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.06.07 20:49
Оценка:
Здравствуйте, lomeo, Вы писали:

VD>>Процесс вызова метода в IL выглядит так. Мы помещаем параметры возова в стек виртуальной машины. Далее указываем инструкцию call или callvirt. Затем мы указываем полную сигнатуру метода который хотим вызвать.


L>Прикольно, т.е. теоретически можно вывести и запихнуть,


Можно практически. Незнаю, только что значит "запихнуть".

L> но вот с полиморфизмом (когда от них зависят другие функции) уже не сработает,


Блин. Полиморфизм полиморфизму рознь. При перегрузке (overloading) используется статический полиморфизм. И только от устройства языка зависит можно ли перегружать функции по возвращаемому значению или нет. При переопределении (overriding) мы имеем один метод который просто физически не может возвращать разные значения.

L> потому что надо пихать сразу. Но хоть так, интересно.


Ничего не понял. Что куда надо пихать?

Еще раз. В C#/C++ не принято (стандартами языков) перегружать фукнции по возвращаемому значению. Для совместимости с ними другие языки зачастую выбирают ту же стратегию. Но ни к ООП ни к рантайму это отношения не имеет. А то кто утвреждает обратное просто профан и трепачь пытающийся сделать умное лицо (привет анониму).

VD>>Блин. Что-то я снова погряз в форумах. Пора нафиг от сюда валить .


L>А?! Кто здесь?


И главное, зачем?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[14]: ФП и абстракция списка
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.06.07 21:03
Оценка:
Здравствуйте, awson, Вы писали:

A>...И это только один из многочисленных вариантов использования классов типов для метапрограммирования. Например, в typechecker полностью вкладывается арифметика (все это есть по ссылкам), далее везде.


А почему для метапрограммирования используются не предназначенные специально для этого вещи?

Зачем все делать через зад? Сами же говорите, что тот же ТемплэйтХаскель (или что-то там) доступен всем. Так почему бы им не воспользоваться?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[13]: ФП и абстракция списка
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 03.06.07 21:11
Оценка:
Здравствуйте, VladD2, Вы писали:

L>> но вот с полиморфизмом (когда от них зависят другие функции) уже не сработает,


VD>Блин. Полиморфизм полиморфизму рознь.


Это неважно.

L>> потому что надо пихать сразу. Но хоть так, интересно.


VD>Ничего не понял. Что куда надо пихать?


Точную сигнатуру в IL.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[13]: ФП и абстракция списка
От: BulatZiganshin  
Дата: 03.06.07 21:19
Оценка: -1
VD>Блин. Полиморфизм полиморфизму рознь. При перегрузке (overloading) используется статический полиморфизм. И только от устройства языка зависит можно ли перегружать функции по возвращаемому значению или нет. При переопределении (overriding) мы имеем один метод который просто физически не может возвращать разные значения.

в ооп не может. с type classes может. я тебе уже раз 10 потворил, что у них разная семантика, а ты о type classes чисто с точки зрения синтаксиса судишь что это вроде как интерфейсы. вот и подумай, могут ли интефрейсы в c$ такое обеспечить
Люди, я люблю вас! Будьте бдительны!!!
Re[14]: ФП и абстракция списка
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.06.07 22:27
Оценка:
Здравствуйте, lomeo, Вы писали:

VD>>Блин. Полиморфизм полиморфизму рознь.


L>Это неважно.


Очень важно.

L>Точную сигнатуру в IL.


Она в нем всегда точная.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: ФП и абстракция списка
От: Lazy Cjow Rhrr Россия lj://_lcr_
Дата: 04.06.07 03:52
Оценка: 1 (1) +2 -2 :))) :))) :)
VladD2,

VD>Этот аргумент подходит только чтобы тебя забанить. Смысловой нагрузки он не несет.


VD>В общем, вопрос можно закрывать. Лично мне все стало полностью ясно. С этого времени я буду отровенно ражать над пропагандистами "чистого" ФП. Я и раньше предпологал, что чистый ФП — это вакуумный сфероконяра, а тепель я в этом просто уверен.


Твои посты в этом топике (увы, я всё прочитал) навевают только мысли подобные

Many a troll hath usenet seen,
none so fine as he hath been.
Feed him once, he's back for more,
calls himself a true Lisp whore.
Say "you fool", he says "I am!",
send him mail, he doth post spam.

Tell me, aged one of old:
Why oh why do they feed trolls?

или
                             ___________________________ 
                    /|  /|  |                          | 
                    ||__||  |       Please don't       | 
                   /   O O\__           feed           | 
                  /          \       the trolls        | 
                 /      \     \                        | 
                /   _    \     \ ---------------------- 
               /    |\____\     \     ||                 
              /     | | | |\____/     ||                 
             /       \|_|_|/   |    __||                 
            /  /  \            |____| ||                 
           /   |   | /|        |      --|               
           |   |   |//         |____  --|               
    * _    |  |_|_|_|          |     \-/                 
 *-- _--\ _ \     //           |                         
   /  _     \\ _ //   |        /                         
 *  /   \_ /- | -     |       |                         
   *      ___ c_c_c_C/ \C_c_c_c____________

или
          \|||/ 
          (@ @) 
 |~~~~ooO~~(_)~~~~~~~| 
 | Please            | 
 | don't feed the    | 
 | TROLL!            | 
 '~~~~~~~~~~~~~~Ooo~~' 
         |__|__| 
          || || 
         ooO Ooo


Зачем ты занимаешься этим?

ps: Хуже троля может быть только троль с банилкой.
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re[15]: ФП и абстракция списка
От: BulatZiganshin  
Дата: 04.06.07 07:02
Оценка:
A>>...И это только один из многочисленных вариантов использования классов типов для метапрограммирования. Например, в typechecker полностью вкладывается арифметика (все это есть по ссылкам), далее везде.

VD>А почему для метапрограммирования используются не предназначенные специально для этого вещи?


VD>Зачем все делать через зад? Сами же говорите, что тот же ТемплэйтХаскель (или что-то там) доступен всем. Так почему бы им не воспользоваться?


так им и пользуются. можно — не значит нужно
Люди, я люблю вас! Будьте бдительны!!!
Re[15]: ФП и абстракция списка
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 04.06.07 07:56
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>>>Блин. Полиморфизм полиморфизму рознь.


L>>Это неважно.


VD>Очень важно.


Неважно не то, что полиморфизм полиморфизму рознь, а то, что ты об этом говоришь — я указал, какой полиморфизм я рассматриваю.
Кстати, даже на уровне выражений вывести тип не всегда возможно из-за нестрогости типизации (в частности, неявного приведения).

L>>Точную сигнатуру в IL.


VD>Она в нем всегда точная.


Именно из-за этого.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[6]: ФП и абстракция списка
От: Gaperton http://gaperton.livejournal.com
Дата: 04.06.07 08:08
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, Gaperton, Вы писали:


G>>То что есть в Хаскельном примере — это только полиморфизм. Зато какой! ОО отдыхает.


VD>Полиморфизм и инкапсуляция присутсвтуют в полном объеме.


Инкапсуляция не присутствует в полном объеме. Присутствует ADT. А это не одно и то же.
Re[7]: ФП и абстракция списка
От: BulatZiganshin  
Дата: 04.06.07 09:49
Оценка:
G>>>То что есть в Хаскельном примере — это только полиморфизм. Зато какой! ОО отдыхает.

VD>>Полиморфизм и инкапсуляция присутсвтуют в полном объеме.


G>Инкапсуляция не присутствует в полном объеме. Присутствует ADT. А это не одно и то же.


а что такое тогда инкапсуляция?
Люди, я люблю вас! Будьте бдительны!!!
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.