Я проверяю свои домашние варят Monoid
классов в Скале с использованием ScalaCheck
библиотеки и ScalaTest
включить неявный импорт для типа времени выполнения в scala check. «Не может найти неявное значение для параметра»
при попытке реализовать СУХИЕ тесты, я получаю неявную ошибку в названии:
Error:(16, 12) could not find implicit value for parameter arbA: org.scalacheck.Arbitrary[A]
forAll { (a: A) =>
^
здесь является реализация intAddition
Monoid:
trait Monoid[A] {
def op(a1: A, a2: A): A
def zero: A
}
object Monoid {
...
val intAddition: Monoid[Int] = new Monoid[Int] {
override def op(a1: Int, a2: Int): Int = a1 + a2
override def zero: Int = 0
}
...
}
И набор тестов:
import org.fpinscala.monoids.Monoid._
import org.fpinscala.testutils.UnitSpec
import org.scalatest.prop.PropertyChecks
import org.scalacheck.Arbitrary._
import scala.language.implicitConversions
class MonoidSpec extends UnitSpec with PropertyChecks {
def assertIdentityBehaviour[A](M: Monoid[A]): Unit = {
import M._
forAll { (a: A) =>
op(zero, a) should be(a)
op(a, zero) should be(a)
}
}
behavior of "intAdditionMonoid"
it should "obey identity laws" in {
assertIdentityBehaviour(intAddition)
}
}
Этот код компилируется, но не выполняется во время выполнения (стирание типа run?). Является ли то, что я пытаюсь достичь в Scala?
Приносим извинения. Ошибка не появляется в среде IDE, но появляется в выводе sbt. Я новичок в scala в целом: P – coderatchet