Являются ли единицы измерения уникальными для F #?
Я читал серию блога блога Эндрю Кеннеди на единицах измерения в F #, и это во многом имеет смысл. Существуют ли какие-либо другие языки с такой системой?
Изменить: Чтобы быть более ясным, я имею в виду гибкие единицы измерительной системы, где вы можете определить свой собственный произвольно.
Ответы
Ответ 1
Учитывается ли TI-89 BASIC? Введите 54_kg * (_c^2)
, и он даст вам ответ в джоулях.
Кроме этого, я не могу вспомнить какие-либо языки, на которых он был встроен, но любой язык с достойным OO должен упростить рулон. Это означает, что кто-то еще, возможно, уже сделал.
Google подтверждает. Например, здесь один в Python. __repr__
можно легко изменить, чтобы также выбрать наиболее подходящую производную единицу и т.д.
CPAN имеет несколько модулей для Perl: Physics:: Unit, Данные:: Размеры, Класс:: Мера, Math:: Units:: PhysicalValue и несколько других, которые будут конвертировать, но на самом деле не сочетают значения с единицами.
Ответ 2
В 2006 году у Nemerle были отмечены компилятором единицы измерения.
http://nemerle.org
http://nemerle.org/forum.old/viewtopic.php?t=265&view=previous&sid=00f48f33fafd3d49cc6a92350b77d554
Ответ 3
С++ имеет его в виде boost:: units.
Ответ 4
Я не уверен, действительно ли это имеет значение, но система RPL
на моем калькуляторе HP-48 имеет похожие функции. Я могу написать 40_gal 5_l +
и получить правильный ответ 156.416 литров.
Ответ 5
Я считаю, что это Fortress поддерживает это, я посмотрю, смогу ли я найти ссылку.
Я не могу найти конкретную ссылку, но спецификация языка упоминает об этом в нескольких местах. Спецификация языка 1.0 также говорит о том, что размеры и единицы были временно удалены из спецификации (вместе с целым кучей других функций), чтобы соответствовать текущей реализации. Это незавершенное производство, поэтому я думаю, что все в порядке.
Ответ 6
F # - первый основной язык поддержки этой функции.
Ответ 7
Существует также спецификация Java для единиц в http://jcp.org/en/jsr/detail?id=275, и вы уже можете использовать ее здесь http://jscience.org/
Ответ 8
Nemerle имеет что-то намного лучшее, чем F #!
Вы должны проверить это: http://rsdn.ru/forum/src/1823225.flat.aspx#1823225.
Это действительно здорово.
И вы можете скачать здесь: http://rsdn.ru/File/27948/Oyster.Units.0.06.zip
Пример:
def m3 = 1 g;
def m4 = Si.Mass(m1);
WriteLine($"Mass in SI: $m4, in CGS: $m3");
def x1 = Si.Area(1 cm * 10 m);
WriteLine($"Area of 1 cm * 10 m = $x1 m");
Ответ 9
Я сделал библиотеку QuantitySystem специально для единиц в С#, однако ее проверка времени компиляции
но я попытался запустить его, как я хотел
также поддерживает расширение, поэтому вы можете определить свои уникальные единицы
http://QuantitySystem.CodePlex.com
также он может различать Torque и Work:) [Это было важно для меня]
библиотечный подход - от измерения к единицам
все, что я видел до сих пор, только единицы подходят.
Ответ 10
Я уверен, что вы сможете сделать это с большинством динамических языков (javascript, python, ruby) с помощью тщательно обезьяны-исправления некоторых базовых классов. Вы можете столкнуться с проблемами, хотя при работе с имперскими измерениями.
Ответ 11
Я уверен, что у Ады это есть.