6

これは簡単なはずだと思いました:

import spire.math.Rational

val seq  = Vector(Rational(1, 4), Rational(3, 4))
val sum  = seq.sum      // missing: scala.Numeric
val prod = seq.product  // missing: scala.Numeric

これは、適切なものを暗黙のスコープに入れるという問題にすぎないと思います。しかし、何をインポートしますか?

を取得するには、次のようにする必要があることがわかりますRationalIsNumeric

import spire.math.Numeric._
implicit val err = new ApproximationContext(Rational(1, 192))
implicit val num = RationalIsNumeric

しかし、それは私にspire.math.Numeric. だから私はこれをさらに試します:

import spire.math.compat._

しかし、運が悪い...

4

2 に答える 2

8

必要なのは次の証拠だけですspire.math.compat.numeric[Rational]:

import spire.math._

val seq = Vector(Rational(1, 4), Rational(3, 4))
implicit val num = compat.numeric[Rational]  // !
seq.sum     // --> 1/1
seq.product // --> 3/16
于 2013-05-06T11:01:38.950 に答える
7

また、Spire が独自のバージョンのsumandproductを提供し、 and を呼び出すことにも注意しqsumqproductください。

import spire.implicits._
import spire.math._

Vector(Rational(1,3), Rational(1,2)).qsum // 5/6

Spireqは、Scala の組み込みメソッドとの競合を避けるために、すべてのコレクション メソッドに接頭辞を付けます。以下に (おそらく不完全な) リストを示します。

  • qsum
  • qproduct
  • qnorm
  • qmin
  • qmax
  • qmean
  • qsorted
  • qsortedBy
  • qsortedWith
  • qselected
  • qshuffled
  • qsampled
  • qchoose

申し訳ありませんが、これに少し遅れてしまいました。StackOverflow は初めてです。

于 2013-10-03T16:20:01.783 に答える