Re[38]: Is C# becoming a functional language?
От: deniok Россия  
Дата: 16.02.07 13:07
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, deniok, Вы писали:


D>>Маленькая поправочка — в Хаскелле это не так.


VD>

...Таким же образом мы могли бы определить Int (целые фиксированного диапазона) и Integer:
VD>data Int = -65532 | ... | -1 | 0 | 1 | ... | 65532 –- ещё псевдо-код
VD>data Integer = ... -2 | -1 | 0 | 1 | 2 ...
VD>где -65532 и 65532 – это максимальное и минимальное целое фиксированного диапазона в данной реализации. Тип Int представляет собой существенно более широкое перечисление, чем Char, однако по-прежнему конечное! В противоположность этому псевдо-код для типа Integer предназначен для описания бесконечного перечисления.


VD>Думаешь вольность автора?


Не, ну это же псевдо-код. Здесь троеточие используется в "бытовом" смысле. Чтобы сделать это "менее" псевдо-кодом, нужно было бы перечислить все конструкторы данных. Но при этом всё равно это осталось бы псевдо-кодом. Ясно, что, поскольку мы должны именовать пользовательские конструкторы данных, то мы не можем создать пользовательское перечисление с бесконечным количеством элементов. Integer встроен и в этом смысле выделяется.

Термином перечисление обозначаются две немного разные вещи (отсюда возможная путаница):
(1) Тип данных, с набором только нуль-арных конструкторов (enumerated type);
(2) Экземпляр класса типа Enum.

Для (1) и только для него достаточно указать deriving Enum, чтобы автоматически получить весь синтаксический сахар арифметических последовательностей:
data  Color = Red | Orange | Yellow | Green  deriving Enum

дает возможность писать
 [Orange ..]

вместо
[Orange, Yellow, Green]


Но бесконечным такое перечисление является только для чисел типа Integer:
 [7 ..]


Если чего непонятно, вот ссылка на Report по этому поводу.
Re[34]: Is C# becoming a functional language?
От: GlebZ Россия  
Дата: 16.02.07 21:02
Оценка: 14 (1)
Здравствуйте, Andir, Вы писали:

A>Ну так сразу в научные статьи лезть я не хочу Страшно Конкретика от товарищей уже поинтересовавшихся темой интересна.

К сожалению, не могу особо чем-то помочь. Интерес чисто платонический, и соответвенно знания только те, которые случайно встретились. Все статьи по оптимизации — научные. Особенно для функциональных. Каждый пытается не только описать некоторую оптимизацию, но и доказать.
В основном используется компинаторная алгебра (лябда исчисление) и теория графов. Без этих знаний — ни фига ничего непонятно. Еще похоже нужна теория категорий.
Вообще же, люблю бегать по citeseer. Там есть например такой раздел Top:Programming: Functional И вообще система ссылок — достаточно эффективная. Весьма простой для прочтения показалась эта статья. Еще посмотри в Clean они описывали Graph Rewrite. Интересная фенька. Лень ссылку искать, у них на сайте в описании языка было краткое описание.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.