Great overview, thanks! I added some new stuff to my reading list. :-)
Just some notes from a Scala user:
Regarding Units: I bundled some work done before by other people into a nicer package/syntax, apart from a few missing bits working with Units looks quite nicely in Scala, even without any special support for it:
val mass: Mass[Double] = 4.0 kg
val longMass: Mass[Long] = mass asLong
val length: Length[Int] = (5 m) * 3
val time: Time[Int] = 1 s
val doubleTime: Time[Int] = time + time
val temp: Temperature[BigDecimal] = BigDecimal("22.22") k
val speed: Speed[Int] = length / time
val area: Area[Int] = length * length
val volume: Volume[Int] = (23 m) * (1 m) * (1 m)
val smallVolume: Volume[Double] = (volume asDouble) / 12.0
val area2: Area[Int] = volume / (23 m)
val accel: Acceleration[Double] = (10.0 m) / ((2.0 s) * (1.0 s))
val accelNum: Double = accel toDouble
The type annotations are not needed, but helps undestanding the design.
Scala will very likely get macros in the next version, together with pluggable types/type providers. Macros not in a Lisp or "extend syntax" sense, but more in a Nemerle sense. Scala macros are written in fully statically typed Scala and are checked at compile time before and after expansion.