RosettaCodeData/Task/First-class-functions-Use-numbers-analogously/Scala/first-class-functions-use-numbers-analogously.scala
Ingy döt Net db842d013d A-M baby
2013-04-10 21:29:02 -07:00

34 lines
712 B
Scala

scala> val x = 2.0
x: Double = 2.0
scala> val xi = 0.5
xi: Double = 0.5
scala> val y = 4.0
y: Double = 4.0
scala> val yi = 0.25
yi: Double = 0.25
scala> val z = x + y
z: Double = 6.0
scala> val zi = 1.0 / ( x + y )
zi: Double = 0.16666666666666666
scala> val numbers = List(x, y, z)
numbers: List[Double] = List(2.0, 4.0, 6.0)
scala> val inverses = List(xi, yi, zi)
inverses: List[Double] = List(0.5, 0.25, 0.16666666666666666)
scala> def multiplier = (n1: Double, n2: Double) => (m: Double) => n1 * n2 * m
multiplier: (Double, Double) => (Double) => Double
scala> def comp = numbers zip inverses map multiplier.tupled
comp: List[(Double) => Double]
scala> comp.foreach(f=>println(f(0.5)))
0.5
0.5
0.5