Я немного поигрался со скалазом и застрял в, казалось бы, тривиальной проблеме.Я играл с монадой Reader и Kliesli и обнаружил, что что-то вроде этого:
val gr = Reader { (_: Int) + 1 }
val a = gr(1)
Это покорно отвечает:
a: scalaz.Id.Id[Int] = 2
То, что я сейчас пытаюсь сделать, это развернутьInt от монады Identity, для этого я должен использовать ??оператор с такой подписью:
final def ??(d: => A)(implicit ev: Null <:< A): A
Первый параметр, который я должен передать, - это значение по умолчанию, вызов по имени Int (как указал Брайан МакКатчон):
scala> a??(1)
<console>:19: error: Cannot prove that Null <:< scalaz.Id.Id[Int].
a??(1)
^
Я быМне нравится понимать, чего мне здесь не хватает, прежде чем я продолжу двигаться.Спасибо ИЗМЕНЕНО, чтобы исправить мою путаницу в отношении вызова по имени без функции параметров.Позор.