Re[15]: "альтернативные" языки
От: Константин Л.  
Дата: 18.02.07 09:07
Оценка:
Здравствуйте, ambel-vlad, Вы писали:

AV>Hi Константин Л.


VD>>>Ну, придумай осмысленную задачу. И вообще, ты же сам сравнивал кортежи со структурами. Тебя не удивляет, что струтуру тоже нельзя перебрать?


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


AV>А зачем перебирать надо? Может проще сразу присвоить соответсвующим переменным нужные значения.

AV>Вот тебе пример из Питона

[]

а может я к каждому элементу шаблонную/generic функцию зааплаить хочу?
Re[16]: "альтернативные" языки
От: ambel-vlad Беларусь  
Дата: 18.02.07 18:44
Оценка:
Hi Константин Л.

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


AV>>А зачем перебирать надо? Может проще сразу присвоить соответсвующим переменным нужные значения.

AV>>Вот тебе пример из Питона

КЛ>а может я к каждому элементу шаблонную/generic функцию зааплаить хочу?


Тогда смотри ответ FR http://rsdn.ru/forum/?mid=2353345
Автор: FR
Дата: 15.02.07


--
С Уважением
Posted via RSDN NNTP Server 2.0
Re[17]: "альтернативные" языки
От: Константин Л.  
Дата: 18.02.07 19:42
Оценка:
Здравствуйте, ambel-vlad, Вы писали:

[]

AV>Тогда смотри ответ FR http://rsdn.ru/forum/?mid=2353345
Автор: FR
Дата: 15.02.07


читал, хорошо. Просто я взял за основу реализацию в популярном сейчас nemerle.

AV>--

AV>С Уважением
Re[18]: "альтернативные" языки
От: ambel-vlad Беларусь  
Дата: 18.02.07 20:05
Оценка:
Hi Константин Л.

КЛ>читал, хорошо. Просто я взял за основу реализацию в популярном сейчас nemerle.


Ну если где-то не реализован проход по кортежу, то это не значит, что это вообще невозможно.

--
С Уважением
Posted via RSDN NNTP Server 2.0
Re[19]: "альтернативные" языки
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.02.07 02:17
Оценка:
Здравствуйте, ambel-vlad, Вы писали:

AV>Ну если где-то не реализован проход по кортежу, то это не значит, что это вообще невозможно.


На само деле он реализован, но только для времени компиляции, где он и имеет смысл. А в рантайме это бессмысленно.

Приведенный пример на ди тоже производит перебор во время компиляции.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[20]: "альтернативные" языки
От: ambel-vlad Беларусь  
Дата: 19.02.07 10:32
Оценка:
Hi VladD2

AV>>Ну если где-то не реализован проход по кортежу, то это не значит, что это вообще невозможно.


V>На само деле он реализован, но только для времени компиляции, где он и имеет смысл. А в рантайме это бессмысленно.


Мне тоже такое не приходилось делать. Но человек просил — ему показали что и такое можно сделать.

V>Приведенный пример на ди тоже производит перебор во время компиляции.


Зато на Питоне в рантайме работает.

--
С Уважением
Posted via RSDN NNTP Server 2.0
Re[21]: "альтернативные" языки
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.02.07 19:00
Оценка:
Здравствуйте, ambel-vlad, Вы писали:

AV>Зато на Питоне в рантайме работает.


А у Питона есть что-то иное? Ладно. Шутку понял.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[22]: "альтернативные" языки
От: ambel-vlad Беларусь  
Дата: 19.02.07 22:43
Оценка:
Hi VladD2

AV>>Зато на Питоне в рантайме работает.


V>А у Питона есть что-то иное? Ладно. Шутку понял.


На Питоне можно и такой фокус http://rsdn.ru/forum/?mid=2356705
Автор: ambel-vlad
Дата: 18.02.07
провернуть. Это даже не compile-time, а вообще "edit-time".

--
С Уважением
Posted via RSDN NNTP Server 2.0
Re[15]: "альтернативные" языки
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.02.07 03:48
Оценка:
Здравствуйте, ambel-vlad, Вы писали:

AV>А зачем перебирать надо? Может проще сразу присвоить соответсвующим переменным нужные значения.

AV>Вот тебе пример из Питона

AV>
AV>def testFun():
AV> return ("aaa", "b")

AV>(a,b)=testFun()
AV>print a
AV>print b
AV>


Извини, но это просто возврат кортежа из метода. Это любой язык поддерживающий кортежи поддерживает. Тут никакого перебора нет и в поминке.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[23]: "альтернативные" языки
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.02.07 03:48
Оценка:
Здравствуйте, ambel-vlad, Вы писали:

AV>На Питоне можно и такой фокус http://rsdn.ru/forum/?mid=2356705
Автор: ambel-vlad
Дата: 18.02.07
провернуть. Это даже не compile-time, а вообще "edit-time".


Где там перебор?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[16]: "альтернативные" языки
От: Зверёк Харьковский  
Дата: 20.02.07 03:59
Оценка:
Здравствуйте, VladD2, Вы писали:

AV>>А зачем перебирать надо? Может проще сразу присвоить соответсвующим переменным нужные значения.

AV>>Вот тебе пример из Питона

AV>>
AV>>def testFun():
AV>> return ("aaa", "b")

AV>>(a,b)=testFun()
AV>>print a
AV>>print b
AV>>


VD>Извини, но это просто возврат кортежа из метода.


Плюс декомпозиция "на лету" (я не спорю, а уточняю. я не в курсе, есть ли языки, поддерживающие кортежи, но не поддерживающие их inline-декомпозицию).
FAQ — це мiй ай-кью!
Re[17]: "альтернативные" языки
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.02.07 04:23
Оценка:
Здравствуйте, Зверёк Харьковский, Вы писали:

ЗХ>Плюс декомпозиция "на лету" (я не спорю, а уточняю. я не в курсе, есть ли языки, поддерживающие кортежи, но не поддерживающие их inline-декомпозицию).


Думаю, что нет. Это родом из ML-я. Так что все кто драли кортежи содрали и идею его декомпозиции. Хотя в C# 3.0 будут аналоги кортэжей (анонимные типы) в которых не будет декомпозиции, но элементы будут именованными. Глобальная глупость решения МС в том, что анонимные типы нельзя будет описать. Они могут быть только выведены компиляторо из использования. Но это не позволяет использовать и для возврата данных и методов. Что, на мой взгляд, является откровенным дизайнерским промахом. Причем обосновывается он тем, что мол для этого прийдется менять рантайм дотнета. И это особснование?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[18]: "альтернативные" языки
От: EvilChild Ниоткуда  
Дата: 20.02.07 18:40
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Глобальная глупость решения МС в том, что анонимные типы нельзя будет описать.

А какой смысл в описании анонимных типов? Можешь пример использования привести?
И какой синтаксис тебе видится? На манер анонимных делегатов?
now playing: Chris.SU — Grim Reaper
Re[19]: "альтернативные" языки
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.02.07 21:11
Оценка: 3 (1)
Здравствуйте, EvilChild, Вы писали:

VD>>Глобальная глупость решения МС в том, что анонимные типы нельзя будет описать.

EC>А какой смысл в описании анонимных типов?

У меня такого вопроса даже не возникает. Лично я не вижу смысла в них без возможности их выразить. Вообще странно что тип есть, а описать его нельзя.

EC>Можешь пример использования привести?


Возврат значения из метода. Сделал ты красивый запрос через LINQ и хочешь поместить его в фукнцию. Ан та тебе — нельзя. Ведь запрос твой возвращает анонимный тип. А их то как раз описать невозможно.

EC>И какой синтаксис тебе видится? На манер анонимных делегатов?


Если уж они пошли по пути именования полей анонимных типов, то можно использовать синтаксис типа:
'{' TypeName FieldName { ';' TypeName FieldName } '}'

и соотвественное использование:
{ string Name; DateTime Age } SomeMethod()
{
  ...
}

ну, и совместимасть по совпадению типа и имени поля. Короче огнаниченная утиная типизация.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[19]: "альтернативные" языки
От: IT Россия linq2db.com
Дата: 21.02.07 00:33
Оценка:
Здравствуйте, EvilChild, Вы писали:

VD>>Глобальная глупость решения МС в том, что анонимные типы нельзя будет описать.

EC>А какой смысл в описании анонимных типов? Можешь пример использования привести?
EC>И какой синтаксис тебе видится? На манер анонимных делегатов?

Главное, что проблема стоит выеденного яйца. Вариант туплов в Н не требует никакой рантайм поддержки и не имеет таких проблем.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[20]: "альтернативные" языки
От: EvilChild Ниоткуда  
Дата: 21.02.07 17:35
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>ну, и совместимасть по совпадению типа и имени поля.

По типу было бы достаточно — структурная эквивалентность. Было бы действительно полезно.
VD>Короче огнаниченная утиная типизация.
Утиная типизация вроде как предполагает позднее связывание, если не брать в расчёт C++ templates,
а здесь всё статически можно проверить или я что-то путаю?
now playing: Future Prophecies — Shadow
Re[20]: "альтернативные" языки
От: EvilChild Ниоткуда  
Дата: 21.02.07 17:35
Оценка:
Здравствуйте, IT, Вы писали:

IT>Главное, что проблема стоит выеденного яйца. Вариант туплов в Н не требует никакой рантайм поддержки и не имеет таких проблем.

И при этом CLS compliant?
Можешь привести пример использования?
now playing: Future Prophecies — Shadow
Re[21]: "альтернативные" языки
От: IT Россия linq2db.com
Дата: 21.02.07 18:20
Оценка: 3 (1) +1
Здравствуйте, EvilChild, Вы писали:

IT>>Главное, что проблема стоит выеденного яйца. Вариант туплов в Н не требует никакой рантайм поддержки и не имеет таких проблем.

EC>И при этом CLS compliant?

Дык без проблем.

EC>Можешь привести пример использования?


Можно даже больше чем пример. Tuples в Н представляют собой структуры/классы следудующего вида:

public struct Tuple[T1, T2]
{
    public field0 : T1;
    public field1 : T2;
}

public struct Tuple[T1, T2, T3]
{
    public field0 : T1;
    public field1 : T2;
    public field1 : T3;
}

что в переводе на C# означает

public struct Tuple<T1, T2>
{
    public T1 field0;
    public T2 field1;
}

Именно так эти структуры и видны из внешнего кода. Сам же компилятор просто обеспечивает встроенную, более удобную работу с этими структурами.
Если нам не помогут, то мы тоже никого не пощадим.
Re[22]: "альтернативные" языки
От: EvilChild Ниоткуда  
Дата: 21.02.07 18:40
Оценка:
Здравствуйте, IT, Вы писали:

IT>Именно так эти структуры и видны из внешнего кода. Сам же компилятор просто обеспечивает встроенную, более удобную работу с этими структурами.

Т.е. когда мы возвращаем экземпляр анонимного типа, компилятор молчаливо создаёт в метаданных новый тип и это дело можно спокойно юзать в публичных интерфейсах сборки? Имена наверное стрёмные? Как у перечислителей, что C# компилятор создаёт? А если мы из 2х методов возвращаем структурно эквивалентные типы он их сведёт к одному в метаданных?
now playing: Future Prophecies — Raw
Re[23]: "альтернативные" языки
От: EvilChild Ниоткуда  
Дата: 21.02.07 18:42
Оценка:
Здравствуйте, EvilChild, Вы писали:

IT>>Именно так эти структуры и видны из внешнего кода. Сам же компилятор просто обеспечивает встроенную, более удобную работу с этими структурами.

EC>Т.е. когда мы возвращаем экземпляр анонимного типа, компилятор молчаливо создаёт в метаданных новый тип и это дело можно спокойно юзать в публичных интерфейсах сборки? Имена наверное стрёмные? Как у перечислителей, что C# компилятор создаёт? А если мы из 2х методов возвращаем структурно эквивалентные типы он их сведёт к одному в метаданных?

Сорри, с именами протупил.
now playing: Future Prophecies — Raw
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.