Являются ли единицы измерения уникальными для F#?[закрыто]

StackOverflow https://stackoverflow.com/questions/107243

Вопрос

Я читал серию постов в блоге Эндрю Кеннеди на единицы измерения в F# и во многих случаях это имеет большой смысл.Есть ли еще языки с такой системой?

Редактировать:Чтобы быть более понятным, я имею в виду гибкую систему единиц измерения, в которой вы можете произвольно определять свои собственные.

Это было полезно?

Решение

Учитывается ли TI-89 BASIC?Входить 54_kg * (_c^2) и он даст вам ответ в джоулях.

Кроме этого, я не могу припомнить ни одного языка, в который бы он был встроен, но любой язык с приличным объектно-ориентированным подходом должен упростить создание собственного.Это означает, что кто-то другой, вероятно, уже это сделал.

Гугл подтверждает.Например, вот один на Python. __repr__ можно легко изменить, чтобы также выбрать наиболее подходящую производную единицу и т. д.

CPAN имеет несколько модулей для Perl: Физика::Единица, Данные::Размеры, Класс::Мера, Math::Units::PhysicalValue, и несколько других, которые преобразуют, но на самом деле не объединяют значения с единицами измерения.

Другие советы

В 2006 году Nemerle проверила компиляторы единиц измерения.

http://nemerle.org

http://nemerle.org/forum.old/viewtopic.php?t=265&view=previous&sid=00f48f33fafd3d49cc6a92350b77d554

В C++ это есть в виде повышение::единицы.

Я не уверен, действительно ли это имеет значение, но RPL Система моего калькулятора HP-48 имеет аналогичные функции.я могу написать 40_gal 5_l + и получим правильный ответ 156,416 литров.

Я верю, что видел это Крепость поддержите это, я посмотрю, смогу ли я найти ссылку.

Я не могу найти конкретную ссылку, но в спецификации языка она упоминается в нескольких местах.В спецификации языка 1.0 также говорится, что измерения и единицы измерения были временно исключены из спецификации (вместе с целой кучей других функций), чтобы они соответствовали текущей реализации.Работа еще продолжается, так что я думаю, что все меняется.

F# — первый основной язык, поддерживающий эту функцию.

Существует также спецификация Java для модулей по адресу http://jcp.org/en/jsr/detail?id=275 и вы уже можете использовать его здесь http://jscience.org/

У 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");

ну, я сделал библиотеку QuantitySystem специально для модулей на C#, однако она не проверяет время компиляции

но я постарался заставить его работать так, как хотел

также он поддерживает расширение, поэтому вы можете определить свои уникальные юниты

http://QuantitySystem.CodePlex.com

также он может различать крутящий момент и работу :) [Это было важно для меня]

Библиотечный подход находится от измерения до единиц, все, что я видел до сих пор подхода только подразделения.

Я почти уверен, что он есть у Ады.

Я уверен, что вы сможете сделать это с большинством динамических языков (javascript, python, Ruby) с помощью осторожно обезьянье исправление некоторых базовых классов.Однако при работе с имперскими размерами у вас могут возникнуть проблемы.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top