This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| % ./scala | |
| scala> collection.mutable.Buffer(1,2,3,4) - 3 | |
| res0: scala.collection.mutable.Buffer[Int] = ArrayBuffer(1, 2, 4) | |
| scala> List(1, 2, 3, 4).scanRight(0)(_ + _) | |
| res1: List[Int] = List(10, 9, 7, 4, 0) | |
| % ./scala -Xmigration |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Testing interpreter and backend | |
| No such file or class on classpath: Test | |
| testing: [...]/files/run/t4990-mig-28.scala [FAILED] | |
| No such file or class on classpath: Test | |
| testing: [...]/files/run/t4990-mig.scala [FAILED] | |
| No such file or class on classpath: Test | |
| testing: [...]/files/run/t4990-mig-29.scala [FAILED] | |
| Directory '/home/soc/Entwicklung/scala-new/test/files/script' not found | |
| 3 of 3 tests failed (elapsed time: 00:00:17) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Units of Measurements | |
| Features: | |
| - Computations: 4s + 5s == 9s | |
| - Conversions | |
| between dimensions: 5m + 10cm == ... | |
| between metric systems: 5ft + 10cm = ... | |
| - Dimensions: 5m * 5m == 25m² || 10m/s * 1s == 10m || 10m² / 5m == 5m | |
| - Everything above combined! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| val length: Length[Int] = 2 m | |
| val time: Time[Int] = 1 s | |
| val speed = length * 2 / time |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Exception in thread "main" java.lang.StackOverflowError | |
| at scala.math.Numeric$IntIsIntegral$class.fromInt(Numeric.scala:49) | |
| at scala.math.Numeric$IntIsIntegral$.fromInt(Numeric.scala:55) | |
| at scala.math.Numeric$IntIsIntegral$.fromInt(Numeric.scala:55) | |
| at scala.math.Numeric$class.one(Numeric.scala:199) | |
| at scala.math.Numeric$IntIsIntegral$.one(Numeric.scala:55) | |
| at metascala.Units$Quantity.<init>(Units.scala:39) | |
| at metascala.Units$Quantity.<init>(Units.scala:39) | |
| at metascala.Units$Quantity.<init>(Units.scala:39) | |
| at metascala.Units$Quantity.<init>(Units.scala:39) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| val mass: Mass[Double] = kg[Double] * 4.0 | |
| val length: Length[Int] = m[Int] * 5 | |
| val time: Time[Int] = s[Int] | |
| val temperature: Temperature[BigDecimal] = k[BigDecimal] * BigDecimal("22.22") | |
| val speed = length / time | |
| val area = length * length | |
| val volume: Volume[Int] = m[Int] * m[Int] * m[Int] * 23 | |
| val accel = m[Double] * 10.0 / (s[Double] * s[Double]) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| val length = (2.0 m) * 5.0 | |
| val length2 = length + (2.0 m) * 5.0 | |
| val time = (5.0 s) * 5.0 | |
| val speed = length2 * 2.0 / time | |
| val mass = (5.0 kg) + (5.0 kg) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| case class Quantity[M <: MInt, KG <: MInt, S <: MInt, A <: MInt, K <: MInt, Mol <: MInt, CD <: MInt, T : Numeric](value: T) { | |
| type This = Quantity[M, KG, S, A, K, Mol, CD, T] | |
| def +(m: This) = Quantity[M, KG, S, A, K, Mol, CD, T](implicitly[Numeric[T]].plus(value, m.value)) | |
| def -(m: This) = Quantity[M, KG, S, A, K, Mol, CD, T](implicitly[Numeric[T]].minus(value, m.value)) | |
| def *[M2 <: MInt, KG2 <: MInt, S2 <: MInt, A2 <: MInt, K2 <: MInt, Mol2 <: MInt, CD2 <: MInt](m : Quantity[M2, KG2, S2, A2, K2, Mol2, CD2, T]) = Quantity[M + M2, KG + KG2, S + S2, A + A2, K + K2, Mol + Mol2, CD + CD2, T](implicitly[Numeric[T]].times(value, m.value)) | |
| def /[M2 <: MInt, KG2 <: MInt, S2 <: MInt, A2 <: MInt, K2 <: MInt, Mol2 <: MInt, CD2 <: MInt](m : Quantity[M2, KG2, S2, A2, K2, Mol2, CD2, T]) = Quantity[M - M2, KG - KG2, S - S2, A - A2, K - K2, Mol - Mol2, CD - CD2, T](implicitly[Numeric[T]].times(value, m.value)) | |
| def apply(v: T) = Quantity[M, KG, S, A, K, Mol, CD, T](implicitly[Numeric[T]].tim |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| package metascala.example | |
| object UnitExample extends App { | |
| import metascala.Units._ | |
| val length = 5.0 *~ (2.0 m) | |
| val length2 = length + (2.0 m) *~ 5.0 | |
| val time = (5.0 s) *~ 5.0 | |
| val speed = length2 *~ 2.0 /~ time /~ 4.0 | |
| val mass = (5.0 kg) + (5.0 kg) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| package metascala | |
| object Units { | |
| import Integers._ | |
| import Utils._ | |
| import Addables._ | |
| import Subtractables._ | |
| trait Unit { | |
| type M <: MInt |
OlderNewer