簡體   English   中英

是否有可能為Scala中的測量單位實施F#的基礎設施?

[英]Is it possible to implement F#'s infrastructure for Units of Measurement in Scala?

F#附帶了對測量單位系統的特殊支持,該系統提供靜態類型安全性,同時編譯為數字類型,而不是通過包裝/展開操作增加運行時的負擔。

是否有可能使用一些Scala的類型系統魔法來實現與之相當的東西?

答案是否定的

現在,有人必然會指向Scalar ,但這會給運行時檢查。 或許,然后,指出Jesper Nordenberg的類型安全單位或Jim McBeath 對它的努力 ,但這些都很麻煩和笨拙。

我會指出,而不是Units編譯器插件 它給了斯卡拉,在2008/2009,一個非常好的單位系統,正如在這篇文章中可以看到 但是,它通過擴展編譯器來實現,如果類型系統足夠的話,這不是必需的。 唉,它沒有被維護,它不再起作用了。

的種類。 您可以使用指數元組中的整數類型表示來非常輕松地對SI單位進行編碼。 有關示例實現,請參見http://svn.assembla.com/svn/metascala/src/metascala/Units.scala

如果單元被編碼為單元類型和整數對的TList ,也應該可以支持可擴展單元系統(例如, ((M, _1), (S, _2))其中M <: UnitS <: Unit )。 在此編碼中,計算數量運算的類型會變得有點復雜。

關於性能,總是存在用於將值包裝在包含單元信息的類型中的存儲器開銷。 但是,實際操作中可能沒有性能開銷,因為所有單元檢查都是在編譯時完成的。

看看測量單位 - Scala宏系統 它似乎滿足您的要求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM