![](/img/trans.png)
[英]How would one implement OCaml / F#'s “function” construct in Scala?
[英]Is it possible to implement F#'s infrastructure for Units of Measurement in Scala?
F#附帶了對測量單位系統的特殊支持,該系統提供靜態類型安全性,同時編譯為數字類型,而不是通過包裝/展開操作增加運行時的負擔。
是否有可能使用一些Scala的類型系統魔法來實現與之相當的東西?
我對此一無所知,但我在Scala Days的這次演講中偶然發現: https : //wiki.scala-lang.org/display/SW/ScalaDays+2011+Resources#ScalaDays2011Resources-ScalaUImplementingaScalalibraryforUnitsofMeasure
的種類。 您可以使用指數元組中的整數類型表示來非常輕松地對SI單位進行編碼。 有關示例實現,請參見http://svn.assembla.com/svn/metascala/src/metascala/Units.scala 。
如果單元被編碼為單元類型和整數對的TList
,也應該可以支持可擴展單元系統(例如, ((M, _1), (S, _2))
其中M <: Unit
和S <: Unit
)。 在此編碼中,計算數量運算的類型會變得有點復雜。
關於性能,總是存在用於將值包裝在包含單元信息的類型中的存儲器開銷。 但是,實際操作中可能沒有性能開銷,因為所有單元檢查都是在編譯時完成的。
看看測量單位 - Scala宏系統 。 它似乎滿足您的要求。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.