На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! правила раздела Алгоритмы
1. Помните, что название темы должно хоть как-то отражать ее содержимое (не создавайте темы с заголовком ПОМОГИТЕ, HELP и т.д.). Злоупотребление заглавными буквами в заголовках тем ЗАПРЕЩЕНО.
2. При создании темы постарайтесь, как можно более точно описать проблему, а не ограничиваться общими понятиями и определениями.
3. Приводимые фрагменты исходного кода старайтесь выделять тегами code.../code
4. Помните, чем подробнее Вы опишете свою проблему, тем быстрее получите вразумительный совет
5. Запрещено поднимать неактуальные темы (ПРИМЕР: запрещено отвечать на вопрос из серии "срочно надо", заданный в 2003 году)
6. И не забывайте о кнопочках TRANSLIT и РУССКАЯ КЛАВИАТУРА, если не можете писать в русской раскладке :)
Модераторы: Akina, shadeofgray
  
> Терминология ФП
    Признаться, хз куда задавать такие вопросы, по-этому остановился на этом "общем" для всех языков разделе. Так что заранее извиняюсь.

    Вопроса, собственно, два:

    1) Можно ли утверждать, что моноид при переносе на ООП сленг - это тупо делегирование какого-то объекта другом такому объекту.
    2) Является ли switch/case грубым приближением паттерн-матчинга?

    Я вот думаю, думаю, смотрю всякие котлины, F#, хаскели и не понимаю почему это называется именно так, а не как принято у ООП'шников и процедурщиков =)
      Цитата Serafim @
      1) Можно ли утверждать, что моноид при переносе на ООП сленг - это тупо делегирование какого-то объекта другом такому объекту.

      Ох и в дебри ты полез... :lol: Судя по определению термина "моноид", это может быть, а может и не быть. Для того, чтобы "было" нужно выполнение ряда условий, которые делегирование может и не обеспечивать. Возьми разверни понятие "мноноид" до определение в базовых терминах, получится что:

      Моноид - это совокупность различных элементов с заданной на нём операцией двух аргументов, обладающей сочетательностью (ассотиативностью) и имеющей один элемент такой, что при выполнении бинарной операции с ним - результат не изменяется.

      Вот сколько требований. А теперь представим два объекта классов разной природы - один порождает массив значений, второй массив функторов. Какие операции из этих объектов могут позволить получить моноид?

      Цитата Serafim @
      Является ли switch/case грубым приближением паттерн-матчинга?

      По формальному определению паттерн-матчинга - является.
        Цитата JoeUser @
        Ох и в дебри ты полез... Судя по определению термина "моноид", это может быть, а может и не быть. Для того, чтобы "было" нужно выполнение ряда условий, которые делегирование может и не обеспечивать. Возьми разверни понятие "мноноид" до определение в базовых терминах, получится что:

        Моноид - это совокупность различных элементов с заданной на нём операцией двух аргументов, обладающей сочетательностью (ассотиативностью) и имеющей один элемент такой, что при выполнении бинарной операции с ним - результат не изменяется.

        Вот сколько требований. А теперь представим два объекта классов разной природы - один порождает массив значений, второй массив функторов. Какие операции из этих объектов могут позволить получить моноид?

        Я тут чуть глубже залез. И есть подозрение, что функции, вида (на псевдоязыке):
        ExpandedWrap disabled
          // def
          fun map(<T>[], Function<A, B>): <T>[] { ... }
           
          // invoke
          map([1, 2, 3], fun(index, value) -> value * 2)


        Являются функторами. А монады - это группы таких функторов, позволяющие "чейнить" функторы:
        ExpandedWrap disabled
          monad1 = [1, 2, 3].map(...).filter(...).concat(monad2)


        Т.е. как ты верно заметил, делегирование - это лишь одно из условий.
        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0331 ]   [ 15 queries used ]   [ Generated: 16.04.24, 04:37 GMT ]