Форум
Компьютерные священные войны
Тема
Как правильно задавать вопросы
B
I
abc
U
X
3
X
3
H1
H2
H3
H4
H5
H6
Asm
C/C++
C#
Erlang
Haskell
IDL
Java
Lisp
MSIL
Nemerle
ObjC
OCaml
Pascal
Perl
PHP
Prolog
Python
Ruby
Rust
SQL
VB
Здравствуйте, hi_octane, Вы писали: A>>Допустим у нас есть несколько (ну допустим пять) величин: метры, килограммы, секунды, ньютоны и джоули. A>>Да, их нельзя складывать с друг с другом. Но их можно(нужно) умножать и делить. A>>Таким образом, чтобы написать формулу, которая содержит три величины, нам нужно иметь 3*(5+1)*(5+1) типов данных. A>>То есть 36 типов для результатов умножения (килограмм*метр), A>>И 2*36 типов для деления килограмм/метр и метр/килограмм. A>>То есть, что-то около сотни типов. (Точная цифра =108) _>Вместо тысячи слов "почему нельзя", всё сделал [url=https://www.rsdn.org/forum/src/1847899.1]Oyster на Nemerle ещё в 2006-м[/url]: _>[q] _>Возможности: _>1. Независимые типы данных, такие как mass и length. Присвоить один другому нельзя — будет ошибка компиляции. _>2. Автоматическое конвертирование величин одной и той же размерности из одной системы единиц в другую. К примеру, присвоив килограммам один грамм, в результирующей переменной (si::mass) обнаружим 0.001. Вычисление коэффициентов преобразования производится в compile time. _>3. Контроль за корректностью формул со стороны компилятора. Так, если ускорению попытаться присвоить результат деления длины на время, возникнет ошибка компиляции. С моей точки зрения, это наиболее важное свойство моего кода. Особенно это заметно на трехэтажных формулах, где очень легко потерять из виду, какая же в результате получается размерность. В случае использования моего кода подобного рода ошибки полностью исключаются. _>[/q] _>Пример: _>[q] _>def m3 = [b]1 g[/b]; _>def m4 = Si.Mass(m1); _>WriteLine($"Mass in SI: $m4, in CGS: $m3"); _>def x1 = Si.Area([b]1 cm * 10 m[/b]); _>WriteLine($"Area of 1 cm * 10 m = $x1 m") _>[/q]
Теги:
Введите теги разделенные пробелами. Обрамляйте в кавычки словосочетания с пробелами внутри, например:
"Visual Studio" .NET
Имя, пароль:
Загрузить
Нравится наш сайт?
Помогите его развитию!
Отключить смайлики
Получать ответы по e-mail
Проверить правописание
Параметры проверки …