Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

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

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

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

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

Ответ 4

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

Ответ 5

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

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

Ответ 6

F # - первый основной язык поддержки этой функции.

Ответ 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

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