Я пытался преобразовать пример haskell, который я натолкнул раньше, на scalaz. Оригинальный пример был такой:Аппликационный экземпляр для кортежа с моноидом и функцией внутри
("Answer to the ", (*)) <*> ("Ultimate Question of ", 6) <*> ("Life, the Universe, and Everything", 7)
Который, насколько я могу понять, использует this экземпляр.
Это не преобразуются в scalaz буквально:
scala> ("Answer to the ", ((_: Int) * (_: Int)) curried) |@| ("Ultimate Question of ", 6) |@| ("Life, the Universe, and Everything", 7) tupled
res37: (java.lang.String, (Int => (Int => Int), Int, Int)) = (Answer to the Ultimate Question of Life, the Universe, and Everything,(<function1>,6,7))
Хотя, я искал экземпляр, и это, кажется be there (опять же, насколько я могу понять).
Итак, вопрос в том, почему он не работает так? Или что я пропустил/не понял?
Этот код действительно отправляет в аппликативный экземпляр для кортежей. Это, в свою очередь, использует моноидный 'mappend' для списков (concatentation). Таким образом, это функциональный состав 2-го компонента кортежа со списком совпадений первой части. –