Этот вопрос тесно связан с этим из них (1, 2, 3)F # Ununit - reunit внутри функции
Я использую внешнюю библиотеку, которая doens't (пока) обрабатывать единицы измерения. Я хочу иметь возможность «отключать» значения, прежде чем передавать их, а затем «воссоединить» их, когда верну мне результаты.
Уловка заключается в том, что я хотел бы избежать принуждения объявлять единицы WHICH заранее.
Пример фрагмента
let ExternalNonUnitAwareFunction s = s + 1.
let MyUnitAwareClient (s:float<'u>) = //'
//1. this option "flattens" to no unit, or fixes to first inferred unit
//let (unit:float<'u>) = 1.0<_>
//2. this works fine, except for 0!
let unit = s/(float s)
s |> float |> ExternalNonUnitAwareFunction |> (*) unit
мне не удалось решить, как справиться с этим один ...
Update Если у меня есть understood correctly, окончательный вариант F # будет включать в себя функции сделать это.
майского CTP/2010 Beta 1 релиз имеет единицы измерения поддержка подписанных интегральных типов - см. http://blogs.msdn.com/dsyme/archive/2009/05/20/detailed-release-notes-for-the-f-may-2009-ctp-update-and- visual-studio-2010-beta1-releases.aspx –