Как найти все экземпляры
Monoid
. Например, как узнать, есть лиMonoid
экземпляр дляMap
в scalaz? И если да, то где он находится в исходном коде. Я попытался следующие без успехаКак узнать, что произойдет, когда я использую Monoid для Map в scalaz@ implicitly[Monoid[Map[_, _]]] Main.scala:1146: could not find implicit value for parameter e: scalaz.Monoid[Map[_, _]] implicitly[Monoid[Map[_, _]]] ^ Compilation Failed
Как я могу видеть, что происходит (неявные преобразования, ...), когда я выполняю код из РЕПЛ, как
Map("a", 1) |+| Map("a", 1)
4
A
ответ
5
Невозможно найти все экземпляры класса типа.
В частности, для
Map
это зависит от типа значений, поскольку экземпляр моноидаMap[K, V]
нуждается в экземпляреSemigroup[V]
.Вы можете найти код для
Map
'sMonoid
вscalaz.std.map
.Вы можете увидеть неявные преобразования с помощью отражения:
import scalaz.std.map._ import scalaz.std.anyVal._ import scalaz.syntax.semigroup._ import scala.reflect.runtime.universe._ showCode(reify { Map("a" -> 1) |+| Map("a" -> 1) }.tree) // `package`.monoid.ToSemigroupOps( // Predef.Map.apply(Predef.ArrowAssoc("a").->(1))) // (map.mapMonoid(Predef.this.DummyImplicit.dummyImplicit, anyVal.intInstance)) // .|+|(Predef.Map.apply(Predef.ArrowAssoc("a").->(1)))
В implicits Scalaz на работе:
- Синтаксис преобразования
ToSemigroupOps
добавить|+|
операциюMap
. - Экземпляр
Monoid
дляMap[String, Int]
, который использует экземплярSemigroup[Int]
.
- Синтаксис преобразования
Смежные вопросы
- 1. Как узнать, что я использую REST?
- 2. Что произойдет, если я не использую deleteelater для удаления qthread?
- 3. Что произойдет, если я не использую mpz_clear в GMP?
- 4. Что произойдет, если я использую LAPolicyDeviceOwnerAuthentication на iOS 8?
- 5. Что произойдет, если я использую malloc с неправильным размером?
- 6. Django Signals, как узнать, когда произойдет обновление?
- 7. Как я могу узнать, что я использую ES6 в React?
- 8. Что произойдет, если я не использую нулевой массив в C
- 9. Что произойдет, если я использую CClientDC в функции OnPaint()?
- 10. Что произойдет, если я использую wait() в дочернем процессе?
- 11. Случайное Python: Что произойдет, если я не использую семя (someValue)?
- 12. Что произойдет, если я использую mongos 2,6 с mongod 3,0
- 13. Использование SerialDataReceivedEventHandler позволяет узнать, когда произойдет таймаут?
- 14. Что _can_ Я использую как std :: map keys?
- 15. Что произойдет, когда обнаружен тупик
- 16. Instaign Monoid для типа
- 17. В PHP, когда я использую :: и когда я использую ->
- 18. Что произойдет, когда я вызову Class.getInstance для уже созданного класса?
- 19. Что такое u, когда я использую json.loads?
- 20. Как узнать, что я использую Повторяющийся платеж или подписку
- 21. Как узнать, какую версию игры я использую?
- 22. Как я могу узнать, что такое EntityValidationErrors, когда я использую Entity Framework 5 и dbContext?
- 23. Как узнать, использую ли я Java EE?
- 24. Google Map не загружается, когда я использую progaurd
- 25. Когда я использую node_type с std :: map :: insert?
- 26. Как узнать, какое дистрибутив Linux я использую?
- 27. Как узнать, использую ли я линкер GOLD?
- 28. Как узнать, какую версию мавенна Я использую
- 29. Как узнать, какой CLR я использую?
- 30. KineticJS: Когда я использую toImage(), и когда я использую кеш()
Есть ли неявное преобразование без использования скаляза? – melston