Набор вопросов
От: Аноним  
Дата: 28.04.11 04:57
Оценка:
1. Макросы нельзя использовать рекурсивно?
2. есть ли аналог функции
function (const a:int) и
function (mutable a:int)
function (a:int)
Re: Набор вопросов
От: Ziaw Россия  
Дата: 28.04.11 05:41
Оценка:
Здравствуйте, Аноним, Вы писали:

А>1. Макросы нельзя использовать рекурсивно?


Не очень понятен вопрос. Как вы себе это представляете? Использовать макрос в квазицитатах в тоже сборке где он объявлен нельзя. Обычно делается рекурсивный разбор макроса.

А>2. есть ли аналог функции

А>function (const a:int) и
А>function (mutable a:int)
А>function (a:int)

Этот вопрос понять не получилось вообще
Re[2]: Набор вопросов
От: Аноним  
Дата: 28.04.11 06:05
Оценка:
Здравствуйте, Ziaw, Вы писали:

Z>Здравствуйте, Аноним, Вы писали:


А>>1. Макросы нельзя использовать рекурсивно?


Z>Не очень понятен вопрос. Как вы себе это представляете? Использовать макрос в квазицитатах в тоже сборке где он объявлен нельзя. Обычно делается рекурсивный разбор макроса.


а я несколько дней пытался понять этот факт.... думал разбор идет рекурсивно (тогда бы было реально использовать макросы вместо функций (функция стала бы частным случаем макроса))

А>>2. есть ли аналог функции

А>>function (const a:int) и
А>>function (mutable a:int)
А>>function (a:int)

Z>Этот вопрос понять не получилось вообще


могу ли я создать функцию которая будет принимать только константный параметр.
например ttt(1+1) верно
mutable x=1;
ttt(x) ошибка
Re: Набор вопросов
От: hardcase Пират http://nemerle.org
Дата: 28.04.11 06:35
Оценка:
Здравствуйте, Аноним, Вы писали:

А>1. Макросы нельзя использовать рекурсивно?


Можно. Только их нужно использовать в функциональной форме записи. Но как правило это не требуется, так как если макрос получил управление, то он в силах раскрыть код с новыми входными данными.

А>2. есть ли аналог функции

А>function (const a:int) и
А>function (mutable a:int)
А>function (a:int)

Все параметры функций по-умолчанию иммутабельны. Чтобы сделать параметр мутабельным нужно добавить модификатор mutable к имени параметры либо ref/out к типу.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[3]: Набор вопросов
От: hardcase Пират http://nemerle.org
Дата: 28.04.11 06:37
Оценка:
Здравствуйте, Аноним, Вы писали:

Z>>Этот вопрос понять не получилось вообще


А>могу ли я создать функцию которая будет принимать только константный параметр.

А>например ttt(1+1) верно
А>mutable x=1;
А>ttt(x) ошибка

Понятия константности эквивалентного C++ у нас нет. Его нормальная реализация потребует переписывания чуть менее чем всего FCL.
/* иЗвиНите зА неРовнЫй поЧерК */
Re: Набор вопросов
От: VladD2 Российская Империя www.nemerle.org
Дата: 02.05.11 21:19
Оценка:
Здравствуйте, Аноним, Вы писали:

А>1. Макросы нельзя использовать рекурсивно?


Это сложный вопрос. Смотря что считать рекурсией.

Например, в стандартной библиотеке некоторые макросы написаны рекурсивно. Но это как бы рекурсия на прошлую версию макросов, так что это не совсем рекурсия.

Кроме того сами макросы — это просто немерле-код. А он, конечно же поддерживает рекурсию. Так что если задача просто рекурсивно исполнять код макросов, то это решается выносом кода макроса в отдельную функцию и ее рекурсивным вызовом.

В общем, чтобы ответить на этот вопрос нужно понять что хочет Аноним.

А>2. есть ли аналог функции

А>function (const a:int) и
А>function (mutable a:int)
А>function (a:int)

1 и 3 — это одно и то же. Собственно все есть. Параметр по умолчанию неизменяемый. Чтобы он изменялся нужно добавить ключевое слово mutable.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Набор вопросов
От: VladD2 Российская Империя www.nemerle.org
Дата: 02.05.11 21:22
Оценка:
Здравствуйте, Аноним, Вы писали:

А>а я несколько дней пытался понять этот факт.... думал разбор идет рекурсивно (тогда бы было реально использовать макросы вместо функций (функция стала бы частным случаем макроса))


Это какая-то философия.

А>>>2. есть ли аналог функции

А>>>function (const a:int) и
А>>>function (mutable a:int)
А>>>function (a:int)

Z>>Этот вопрос понять не получилось вообще

А>могу ли я создать функцию которая будет принимать только константный параметр.
А>например ttt(1+1) верно
А>mutable x=1;
А>ttt(x) ошибка

Хм. У Вас странное понимание неизменяемости. Параметр копируется. По крайней мере если это вэлью-тип. По сему нет никакого смысла ограничивать передачу изменяемой переменной в функцию имеющую неизменяемый параметр.

Если нужно добиться передачи именно константных выражений, то этого можно достичь с использованием макросов. Но какой в этом смысл?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Набор вопросов
От: VladD2 Российская Империя www.nemerle.org
Дата: 02.05.11 21:23
Оценка:
Здравствуйте, hardcase, Вы писали:

А>>могу ли я создать функцию которая будет принимать только константный параметр.

А>>например ttt(1+1) верно
А>>mutable x=1;
А>>ttt(x) ошибка

H>Понятия константности эквивалентного C++ у нас нет. Его нормальная реализация потребует переписывания чуть менее чем всего FCL.


Сдается мне, что в С++ в функцию принимающую константный параметр без проблем можно передать неконстантный int. Это же копирование!
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Набор вопросов
От: VladD2 Российская Империя www.nemerle.org
Дата: 02.05.11 21:25
Оценка:
Здравствуйте, Аноним, Вы писали:

А>1. Макросы нельзя использовать рекурсивно?

А>2. есть ли аналог функции
А>function (const a:int) и
А>function (mutable a:int)
А>function (a:int)

Имеет смысл описать свои задачи.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.