Re[35]: Is C# becoming a functional language?
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.02.07 00:39
Оценка: +1
Здравствуйте, Sinclair, Вы писали:

S>4. Анонимные типы. Аналогично анонимным делегатам, помогает избавиться от мусорного кода по декларированию временных структур только для того, чтобы передать данные от одного фрагмента запроса к другому.

S>5. Спец.синтаксис для SQL-Like запросов. Совершеннейший сахар; ничего особенного не дает.

S>Из этого списка сходство с возможностями монад имеет только п.4, и то это весьма отдаленное сходство. Если ты так хорошо понимаешь суть сходства Linq и монад, тебе не составит труда кратко обозначить, какие из перечисленных мной возможностей связывают между собой эти понятия. Не отвечая вопросом на вопрос и не ссылаясь на ссылки на цитаты. А?


Тройка замечаний.
1. Все же не анонимные делегаты, а анонимные методы. Это так мелкая придирка. Их почему-то все путают.
2. Анонимные типы — это аналог (кастрированный) кортежей (tuple-ов) и к монадам он отношения не имеет.
3. Булщит зелепил не он, а ЕвилЧилд, а данный товарищь просто решил его поддержать.

По сути же соверешнно согласен. Ребата натрепались, а теперь духу не хватет признаться, что ошиблись.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[36]: Is C# becoming a functional language?
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.02.07 00:40
Оценка:
Здравствуйте, BulatZiganshin, Вы писали:

BZ>как я понимаю, композиция этих extension methods в haskelдВи делалась как раз с помощтю монады.


Не правльно понимаешь. В Хаскель нет понятия объектов. В нем все фукнции являются глобальными. Так что аналогов в нем просто нет. Методы-расширения это всего лишь возможность вызвать статически метод не так:
int x = SomeClass.SomeStaticMethod(someObject, "a");

а так:
int x = someObject.SomeStaticMethod(1, "a");

В Хаскеле пожалуй прямым аналого будет оператор piplene — |>.

BZ> что давало возможность писать императвиный код внутри этого как бы sql-запроса.


Оставь свои домысли. В C# функциональный код писать не просто. А императивный можно писать везде и всегда.

BZ> можежь сравнить это с List monad — она перечисляет все значения в списке и позволет тебе выполнить какие-то вычисления над ними, или отфильтровать их


Это вообще не в кассу. В C# почти все встроенные коллекции позволяют модификацию по месту. Это вообще не проблема. Линк же использует идею итераторов. Собственно итераторы ты уже мог наблюдать здесь
Автор: VladD2
Дата: 10.02.07
:
module ConsoleEx
{
  public GetLines() : SCG.IEnumerable[string]
  {
    mutable line = ReadLine();
    while (line != null)
    {
      yield line;
      line = ReadLine();
    }
  }
}

Это эдакий способ реализации ленивости в не ленивом языке типа C# или Nemerle.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[36]: Is C# becoming a functional language?
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.02.07 00:40
Оценка:
Здравствуйте, lomeo, Вы писали:

L>Я показывал общие свойства.


Ничего ты не показал.

L>Допустим, мы разрабатываем конкретную монаду в C#. Ну, предположим, у нас есть время поизвращаться. Дальше код условный, я на С# не пишу.


Вот с этого надо и начинать было. "С# и занимаюсь гипотетическими рассуждениями...".
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[37]: Is C# becoming a functional language?
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.02.07 00:40
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Может быть, аналог такого тоже можно изобразить в виде монады на функциональном языке. Но это уже скорее из области доказательства взаимной эквивалентности машины Тьюринга и частично-рекурсивных функций.


Вот именно. Плюс демагогия разводимая на базе этого факта.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[38]: Is C# becoming a functional language?
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.02.07 00:40
Оценка:
Здравствуйте, lomeo, Вы писали:

L>Но ведь каждый думает по своему, когда решает какую то задачу. Монада — это паттерн, решающий задачу. Допустим, мы идём от него — мы же хотим выяснить связь?


Блин, для особо упертых... Да, паттерн, но паттерн Хаскеля. В ООЯ ему просто нет места. Конечно его даже можно изобразить на ООЯ в которых поддерживаются функциональные объекты, но вот нужны в нем нет, так как есть другие подходы более естесвне6нные для этих языков.

ЗЫ

Так нам будут показаны куски LINQ в которых используются монады?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[38]: Is C# becoming a functional language?
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.02.07 00:40
Оценка:
Здравствуйте, palm mute, Вы писали:

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


GZ>>А почему бы не через continuations? Можно доказать то же самое — но без термина монада.

PM>continuations выражаются через монады .

ОК, господа трепачи. Вот вам C#. Монады вы на нем сотворите без проблем, это вы уже тут раз дващцать сказали. Тогда пользуясь истенностью вашего послендего утверждения "continuations выражаются через монады" и реализуйте, плиз, в C# continuations. Лично скажу вам огромное спасибо и поклонись до земли. Ну, а если кода не будет, то будем считать это силивом по полной порогрмме на чем и закончим эту дисскуссию.

ОК?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Монады от Вадлера. Часть 0
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.02.07 00:40
Оценка:
Здравствуйте, Vermicious Knid, Вы писали:

...
По-моему, зачательная демонстрация того, что простые и прямые решения лучше чем эмуляция. И не важно ради чего эта эмуляци делается, из соображений совместимости, или в пылу борьбы за чистоту.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Монады от Вадлера. Часть 0
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.02.07 00:40
Оценка:
Здравствуйте, Mirrorer, Вы писали:

VK>>Теперь пример с использованием исключений и без лишней функциональности, полученный из вышепревиденного примера:

M>Красиво и аккуратно.

Но менее фунционально. Ведь пример с исключениями останавливается на превой ошибке. В реальных компиляторах так поступать нельзя.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Монады от Вадлера. Часть 3
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.02.07 00:40
Оценка:
Здравствуйте, Mirrorer, Вы писали:

M> Это у Вадлера он в однобуквенных идентификаторах. Я старался избавиться от них, оставляль только в очевидных случаях типа Add x y


К сожалению не всегда все очевидно m, a, s и т.п. просто сбивают с толка.

VD>>Темболее мне не хочется писать пдобную груду кода.

M>Там больше комментариев чем кода.

И все же. У меня еще дел полно, а пенисометрия заранее бессмысленная.
Открою секрет, я обычно пишу пенисометрический код только если он нужен мне где-то еще. Например, в статье. Получается чтл-то вроде продукции двойного назнанчения.

VD>>Прицитпиальных проблем повторить пдобную фигню на Немерле я не вижу.

M>Дык их и нету. Причем можно повтороить 1 в 1 буквально. Что я наверное сделаю как будет время.

Имеется в виду без монад. Они здесь лишнии. Это костыли Хаскеля для бопрьбы с отуствием сотсояния и ленивостью.

M>Ок. Давай кратко опишу задачу. Простейший интерпретатор с грамматикой

...

Блин, я хринею. Взял и практически повторил свой исходный пример. на "простейший интерпретатор" это мало похоже. Простейший я уже приводил. Плюс в исходниках Немела есть "сложнеший", т.е. интерпретатор самого Немерла.

Ты бы лучше выделял задачу которую хочешь продемонстрировать на минимальном примере, а не на "простейшем" в твоем понимании. Темболее что Vermicious Knid уже реализовал твой пример. Жаль, что только толку для окружающих в этом всем мало. Ведь конретных проблем вы так и не продемонстировали. А без этого для 99% читателей ваших соощений все это куча закорючек.

Хотя конечно визуально видно, что код на Хаскеле как минимум не короче, и точно более запутан и менее понятен. Что лично меня только укрепляет во мнении, что монады в импертивных языках не нужны, а Хаскелю они нужны как костыли позволющие обхдить чрезмерную чистоту.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[34]: Is C# becoming a functional language?
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.02.07 00:40
Оценка:
Здравствуйте, lomeo, Вы писали:

L>Путаешься в монадах? Не используй Хаскель, проблем то.


Я не то что бы путась. Я нелюблю когда трехэтажные навороты применяются на ровном месте. Опять же тот же принцип Оккама. Хороший надо признать принцип, хотя и эмпирический.

Хаскель я тоже не применяю, так как мне не интересны задаче в которых не важна скорость. Незнаю почему. Не српашивай. Просто так выходит, что все чем бы мне не было интересно заниматься требует максимальной производительности для приемлемой работы на современной технике.

VD>> Таких как ты найдутся еденицы, такик как я подавляющее больинство.


L>Спасибо. Для меня это комплимент.


Пожалуйста. Годрись этим. Но практической пользы от этого — 0.

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


L>Нет. Из двух решений всегда надо выбирать подходящее.


Так. Извини, но мне надоело принимать в бесполезной словесной переплаке. Ты встал в ряд демагогов. Если будет сказть что-то интересное, то я с удовольствием выслушаю. А смотреть на словесную эквилибристику и контр-аргументацию в стиле "нет не белое, а белое" не не интересно.

Адью.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[35]: Is C# becoming a functional language?
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.02.07 00:40
Оценка:
Здравствуйте, lomeo, Вы писали:

VD>>От, блин, а мужики то и не знали. Арабы хрен знает сколько лет назад придумали позиционную систему счисления и пользуются ее. Описываенся она на раз. А у Хаскеля идеологические проблемы. Впроче, как всегда. Вот по этому я и говорию, что это интеллектуальное извращение и самообман. Попытка отгородиться от окружающего мира шорами.


L>И? Каким образом позиционная система счисления позволяет нам записывать перечисление?


Какой бред, а?! Какие перечисления? Перечисление конечно по определению. А числа бесконечны. Это в Хаскеле было принято идиотское решение считать числа перечислением. Вот пусть и решают сами же созданные проблемы. А я лучше у арабов поучусь. Пишу 1 получаю "один". Пишу 1 и еще 1, т.е. 11, получаю "один десяток и один" или "одинащцать". И никаких идеологических проблем.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[31]: Is C# becoming a functional language?
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.02.07 00:40
Оценка:
Здравствуйте, GlebZ, Вы писали:

GZ>Влад. Для начала нужно понять что такое догмат "чистоты" в особенности со стороны компилятора. Это не Lazy. Lazy — всего лишь одна из оптимизаций.


Ты мня извини, но прежде чем кидаться что-то объяснять можно спросить у того кому собрался объяснять, а "не знает ли он этого?". Так вот отвечу — знаю. Но ленивость и чистота в Хаскеле ваимозависимые вещи. Желание сделать весь код линивым вынуждает делать его чистым, а полная чистота требует ленивости. Монады же призваны обходить оба ограничения делая вычисления последовательными и модифицирующими в казалось бы чисто-фукнциональном языке. Другими словами они эмулируют то что в других языках есть штатно: императивность и объектную ориентацию.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[36]: Is C# becoming a functional language?
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.02.07 00:40
Оценка:
Здравствуйте, lomeo, Вы писали:

L>Перечитай мой первый пост. Я указал тебе на то, что ты путаешь IO-монаду и монаду вообще.


Суть от этого не меняется. Утверждение "монады нужны хаскелю для обхода сосбвенной чистоаты и ленивости" не становится не верным. И утверждение "в ООЯ применение монад бессмысленно" тоже.

В общем, так как показать необходимость монад в ООЯ вы не в силах вопрос читаю ичепраным.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[38]: Is C# becoming a functional language?
От: Sinclair Россия https://github.com/evilguest/
Дата: 13.02.07 05:24
Оценка: +2
Здравствуйте, lomeo, Вы писали:
L>Например, показав, что запрос в LINQ является монадой мы можем быть уверены (т.к. это доказано на более общем уровне), что m.Select(x => x) == m или то же самое с SelectMany. Что x.SelectMany(f).SelectMany(g) == x.SelectMany(x => f(x).SelectMany(g)) ну и так далее.
О, вот это уже интересно. А можно продемонстрировать путь такого доказательства? Я правильно понимаю, что для него нам понадобится умение выполнять из Select(IEnumerable<T> this, Predicate<T> predicate) декомпозицию в Bind и что-то еще, а потом анализировать свойства этого чего-то еще?

L>Я понимаю, что это практикующему программисту не нужно но от этого он вряд ли лишается права глядеть на LINQ как на монаду.

Нет, я все это понимаю, и уметь увидеть в вызове процедуры на паскале композицию кортежа — очень полезно для развития воображения. Но мне кажется, что роль монад в Linq сильно преувеличена. Под определенным углом можно увидеть почти все что угодно во всем, что угодно. C некоторой точки зрения оператор switch, виртуальные методы, и обработчики исключений можно рассматривать как частные случаи паттерн-матчинга. Но особенной ценности это рассмотрение нам не даст, особенно если учесть, что вторые и третьи были придуманы во многом для того, чтобы избавиться от первого.

L>Но только ты показал, что именно не понятно

Ну, я наверное умею тупить наиболее убедительно
1.2.0 alpha rev. 655
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[37]: Is C# becoming a functional language?
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 13.02.07 06:27
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Суть от этого не меняется. Утверждение "монады нужны хаскелю для обхода сосбвенной чистоаты и ленивости" не становится не верным. И утверждение "в ООЯ применение монад бессмысленно" тоже.


Последнее, очевидно, ложно. Если я применяю монады в ООЯ, то это имеет определенный смысл.

VD>В общем, так как показать необходимость монад в ООЯ вы не в силах вопрос читаю ичепраным.


Необходимость монад даже в ФЯ показывать никто и не предлагал.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[39]: Is C# becoming a functional language?
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 13.02.07 06:37
Оценка: :)))
Здравствуйте, VladD2, Вы писали:

VD>Блин, для особо упертых... Да, паттерн, но паттерн Хаскеля. В ООЯ ему просто нет места. Конечно его даже можно изобразить на ООЯ в которых поддерживаются функциональные объекты, но вот нужны в нем нет, так как есть другие подходы более естесвне6нные для этих языков.


Никто не говорил о нужде.

VD>Так нам будут показаны куски LINQ в которых используются монады?


А зачем вам монады в шарпе?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[37]: Is C# becoming a functional language?
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 13.02.07 06:37
Оценка: -1 :))
Здравствуйте, VladD2, Вы писали:

L>>Я показывал общие свойства.


VD>Ничего ты не показал.


Влад, если тебе чего то непонятно, ты спрашивай

L>>Допустим, мы разрабатываем конкретную монаду в C#. Ну, предположим, у нас есть время поизвращаться. Дальше код условный, я на С# не пишу.


VD>Вот с этого надо и начинать было. "С# и занимаюсь гипотетическими рассуждениями...".


Ну тебе то незнание монад не мешает производить их оценку, верно?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[36]: Is C# becoming a functional language?
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 13.02.07 06:37
Оценка: -1
Здравствуйте, VladD2, Вы писали:

VD>По сути же соверешнно согласен. Ребата натрепались, а теперь духу не хватет признаться, что ошиблись.


По сути у меня мнение польностью противоположное. Тебе показали, а у тебя духу не хватает признать, что ты ошибся. Вот и начинаешь говорить — где показали, да ещё раз покажите.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[35]: Is C# becoming a functional language?
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 13.02.07 06:47
Оценка: -1
Здравствуйте, VladD2, Вы писали:

VD>Так. Извини, но мне надоело принимать в бесполезной словесной переплаке. Ты встал в ряд демагогов. Если будет сказть что-то интересное, то я с удовольствием выслушаю. А смотреть на словесную эквилибристику и контр-аргументацию в стиле "нет не белое, а белое" не не интересно.


Надоело — не принимай. Демагогией же пока занимаешься ты, не списывай, пожалуйста, свои достоинства на меня.
Заявить, что "белое — это когда белое, только не совсем белое", а потом удивляться, что ему возражают, ты умеешь.

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

L>>Нет. Из двух решений всегда надо выбирать подходящее

Ладно, поправлю фразу. БОЛЕЕ подходящее. Так пойдёт?
Заметь простота тут не указывается

VD>Адью.


Покеда!
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[36]: Is C# becoming a functional language?
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 13.02.07 06:47
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Какой бред, а?! Какие перечисления? Перечисление конечно по определению.


Если бы такое "уменьшение" было бы благом, то в Хаскеле даже числа были бы перечислениями объявленными в каком-нить модуле



VD>А числа бесконечны. Это в Хаскеле было принято идиотское решение считать числа перечислением. Вот пусть и решают сами же созданные проблемы. А я лучше у арабов поучусь. Пишу 1 получаю "один". Пишу 1 и еще 1, т.е. 11, получаю "один десяток и один" или "одинащцать". И никаких идеологических проблем.


Не поверишь, в Хаскеле тоже так можно. И тоже никаких идеологических проблем!
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.