Почему в Н я не могу использовать локальные ф-ции в качестве
От: DarthSidius  
Дата: 07.05.12 00:59
Оценка:
        static Main() : void
        {
            def iterator() : IEnumerable[int] {
                mutable i = 0;
                while( i < 10 ) {
                    yield i;
                    i++;
                }
            }
            foreach( i in iterator() ) {
                WriteLine($"i = $i");
            }
        }

error : yield used in a `loop' function, which is returning void (it should be System.Collections.Generic.IEnumerator[T] or System.Collections.Generic.IEnumerable[T])

Ежели ф-цию вынести в метод — работает.
... << RSDN@Home 1.2.0 alpha 5 rev. 1539>>
♠♠♥♠♠♦♥
Re: Почему в Н я не могу использовать локальные ф-ции в каче
От: DarthSidius  
Дата: 07.05.12 01:01
Оценка:
Здравствуйте, DarthSidius, Вы писали:

... в качестве итератора
... << RSDN@Home 1.2.0 alpha 5 rev. 1539>>
♠♠♥♠♠♦♥
И студия при этом уходит в штопор
От: DarthSidius  
Дата: 07.05.12 01:16
Оценка:
Здравствуйте, DarthSidius, Вы писали:

DS>

DS>error : yield used in a `loop' function, which is returning void (it should be System.Collections.Generic.IEnumerator[T] or System.Collections.Generic.IEnumerable[T])


http://files.rsdn.ru/100846/NemerleIteratorBug.png
... << RSDN@Home 1.2.0 alpha 5 rev. 1539>>
♠♠♥♠♠♦♥
Re: Почему в Н я не могу использовать локальные ф-ции в каче
От: VladD2 Российская Империя www.nemerle.org
Дата: 07.05.12 01:18
Оценка:
Потому-что все циклы в Н реализованы через локальные функции. И если ползволить это делать, то не выйдет реализовать мало-мальски сложную логику.

Если очень хочется иметь локальные генераторы (yield), то можешь воспользоваться макросом Computation Expression и предопределенным билдером для IEnumerable[T] или аналогами для массивов и списков.

За одно, если возникнет вопрос "как на Немерле сделать Async из C# 5.0", то тоже сможешь найти ответ ;).
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Почему в Н я не могу использовать локальные ф-ции в к
От: DarthSidius  
Дата: 08.05.12 03:22
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Потому-что все циклы в Н реализованы через локальные функции. И если ползволить это делать, то не выйдет реализовать мало-мальски сложную логику.


VD>Если очень хочется иметь локальные генераторы (yield), то можешь воспользоваться макросом Computation Expression и предопределенным билдером для IEnumerable[T] или аналогами для массивов и списков.


Не очень хорошая статья. Нифига не понятно. Какая-то магия: comp, defcomp. Не ясно даже в каком пространстве имен эти компы дефкомпы.
... << RSDN@Home 1.2.0 alpha 5 rev. 1539>>
♠♠♥♠♠♦♥
Re[3]: Почему в Н я не могу использовать локальные ф-ции в к
От: _NN_ www.nemerleweb.com
Дата: 08.05.12 07:38
Оценка: 1 (1)
Здравствуйте, DarthSidius, Вы писали:

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


VD>>Потому-что все циклы в Н реализованы через локальные функции. И если ползволить это делать, то не выйдет реализовать мало-мальски сложную логику.


VD>>Если очень хочется иметь локальные генераторы (yield), то можешь воспользоваться макросом Computation Expression и предопределенным билдером для IEnumerable[T] или аналогами для массивов и списков.


DS>Не очень хорошая статья. Нифига не понятно. Какая-то магия: comp, defcomp. Не ясно даже в каком пространстве имен эти компы дефкомпы.


Можно посмотреть код:
EnumerableTest
ComputationExpressions

Часть вики есть также на github: https://github.com/rsdn/nemerle/wiki/Computation-Expression-macro
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[4]: Почему в Н я не могу использовать локальные ф-ции в к
От: DarthSidius  
Дата: 08.05.12 11:12
Оценка:
Здравствуйте, _NN_, Вы писали:

предопределенным билдером для IEnumerable[T] или аналогами для массивов и списков.

DS>>Не очень хорошая статья. Нифига не понятно. Какая-то магия: comp, defcomp. Не ясно даже в каком пространстве имен эти компы дефкомпы.


_NN>Можно посмотреть код:

_NN>EnumerableTest

За это спасибо. Хоть тупо скопирую по аналогии. Если не трудно конечно, а в какой сборке искать ComputationExpressions ?

_NN>ComputationExpressions


_NN>Часть вики есть также на github: https://github.com/rsdn/nemerle/wiki/Computation-Expression-macro


Это 100 раз переведенная статья на английский с хабры. Кроме нее про кампутатион экспрессионс на Н больше ничего походу нет. Это как раз про нее:

Не очень хорошая статья. Нифига не понятно. Какая-то магия: comp, defcomp. Не ясно даже в каком пространстве имен эти компы дефкомпы.

... << RSDN@Home 1.2.0 alpha 5 rev. 1539>>
♠♠♥♠♠♦♥
Re[5]: Почему в Н я не могу использовать локальные ф-ции в к
От: _NN_ www.nemerleweb.com
Дата: 08.05.12 11:25
Оценка: 1 (1)
Здравствуйте, DarthSidius, Вы писали:

DS>За это спасибо. Хоть тупо скопирую по аналогии. Если не трудно конечно, а в какой сборке искать ComputationExpressions ?


ComputationExpressions.Macros.dll, ComputationExpressions.dll
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[5]: Почему в Н я не могу использовать локальные ф-ции в к
От: VladD2 Российская Империя www.nemerle.org
Дата: 08.05.12 13:47
Оценка:
Здравствуйте, DarthSidius, Вы писали:

DS>Это 100 раз переведенная статья на английский с хабры. Кроме нее про кампутатион экспрессионс на Н больше ничего походу нет. Это как раз про нее:

Не очень хорошая статья. Нифига не понятно. Какая-то магия: comp, defcomp. Не ясно даже в каком пространстве имен эти компы дефкомпы.


Для того чтобы использовать это дело для замены локальным yield-ам, особого описания не требуется. Примеров более чем достаточно. Описание нужно для разработки своих компрешеншонов. Но это явно не всем по зубам, да и нужно не всем.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Почему в Н я не могу использовать локальные ф-ции в к
От: DarthSidius  
Дата: 09.05.12 01:00
Оценка:
Здравствуйте, _NN_, Вы писали:

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


DS>>За это спасибо. Хоть тупо скопирую по аналогии. Если не трудно конечно, а в какой сборке искать ComputationExpressions ?


_NN>ComputationExpressions.Macros.dll, ComputationExpressions.dll


Спасибо, нашел. Получается немерловые сборки разбросаны по закоулкам всего списка. Извините, конечно, но это косяк. Привык что пр-ва имен, например, System.Data и System.Data.SqlClient можно найти в System.Data.dll
... << RSDN@Home 1.2.0 alpha 5 rev. 1539>>
♠♠♥♠♠♦♥
Re[6]: Почему в Н я не могу использовать локальные ф-ции в к
От: DarthSidius  
Дата: 09.05.12 01:00
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Для того чтобы использовать это дело для замены локальным yield-ам, особого описания не требуется. Примеров более чем достаточно. Описание нужно для разработки своих компрешеншонов. Но это явно не всем по зубам, да и нужно не всем.


В том то и проблема, что документации для простых смертных — без слез не взглянешь.
... << RSDN@Home 1.2.0 alpha 5 rev. 1539>>
♠♠♥♠♠♦♥
Прилетела птица обломинго
От: DarthSidius  
Дата: 09.05.12 01:18
Оценка:
Здравствуйте, _NN_, Вы писали:

_NN>ComputationExpressions.Macros.dll, ComputationExpressions.dll


Необработанное исключение: System.IO.FileLoadException: Невозможно загрузить файл или сборку "ComputationExpressions, Version=1.1.716.0, Culture=neutral, Public KeyToken=null" или один из зависимых от них компонентов. Требуется сборка со строгим именем. (Исключение из HRESULT: 0x80131044)
в Test1.Program.Main()

... << RSDN@Home 1.2.0 alpha 5 rev. 1539>>
♠♠♥♠♠♦♥
Re[7]: Почему в Н я не могу использовать локальные ф-ции в к
От: _NN_ www.nemerleweb.com
Дата: 09.05.12 06:18
Оценка:
Здравствуйте, DarthSidius, Вы писали:

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


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


DS>>>За это спасибо. Хоть тупо скопирую по аналогии. Если не трудно конечно, а в какой сборке искать ComputationExpressions ?


_NN>>ComputationExpressions.Macros.dll, ComputationExpressions.dll


DS>Спасибо, нашел. Получается немерловые сборки разбросаны по закоулкам всего списка. Извините, конечно, но это косяк. Привык что пр-ва имен, например, System.Data и System.Data.SqlClient можно найти в System.Data.dll


Ну это snippets , релизное качество никто не гарантирует.
По уму надо бы сделать Nemerle.ComputationExperssions, бесспорно.
Хотите этим заняться ?
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re: Прилетела птица обломинго
От: ionoy Эстония www.ammyui.com
Дата: 09.05.12 09:45
Оценка:
Здравствуйте, DarthSidius, Вы писали:
DS>

DS>Необработанное исключение: System.IO.FileLoadException: Невозможно загрузить файл или сборку "ComputationExpressions, Version=1.1.716.0, Culture=neutral, Public KeyToken=null" или один из зависимых от них компонентов. Требуется сборка со строгим именем. (Исключение из HRESULT: 0x80131044)
DS> в Test1.Program.Main()


Если я не ошибаюсь, то надо пересобрать ComputationExpressions, они раньше могли неправильно собираться.
Сделай "git pull", а потом собери заново. Проверь версии получившихся сборок Nemerle.dll и ComputationExpressions.dll — они должны совпадать.
www.livexaml.com
www.ammyui.com
www.nemerleweb.com
Re[2]: Прилетела птица обломинго
От: DarthSidius  
Дата: 09.05.12 10:05
Оценка:
Здравствуйте, ionoy, Вы писали:

I>Если я не ошибаюсь, то надо пересобрать ComputationExpressions, они раньше могли неправильно собираться.

I>Сделай "git pull", а потом собери заново. Проверь версии получившихся сборок Nemerle.dll и ComputationExpressions.dll — они должны совпадать.

Скачал последний релиз: 718
Версии и там и там 1.1.718.0
... << RSDN@Home 1.2.0 alpha 5 rev. 1539>>
♠♠♥♠♠♦♥
Re[8]: Почему в Н я не могу использовать локальные ф-ции в к
От: DarthSidius  
Дата: 09.05.12 10:05
Оценка:
Здравствуйте, _NN_, Вы писали:

_NN>>>ComputationExpressions.Macros.dll, ComputationExpressions.dll


DS>>Спасибо, нашел. Получается немерловые сборки разбросаны по закоулкам всего списка. Извините, конечно, но это косяк. Привык что пр-ва имен, например, System.Data и System.Data.SqlClient можно найти в System.Data.dll


_NN>Ну это snippets , релизное качество никто не гарантирует.

_NN>По уму надо бы сделать Nemerle.ComputationExperssions, бесспорно.
_NN>Хотите этим заняться ?

Да я непротив посильной помощи. Что там надо сделать? С учетом того, что пока эти самые (как их там по русски-то?) экспрессионс для меня еще темный лес.
... << RSDN@Home 1.2.0 alpha 5 rev. 1539>>
♠♠♥♠♠♦♥
Re[3]: Прилетела птица обломинго
От: ionoy Эстония www.ammyui.com
Дата: 09.05.12 14:10
Оценка:
Здравствуйте, DarthSidius, Вы писали:
DS>Скачал последний релиз: 718
DS>Версии и там и там 1.1.718.0

Если можешь, выложи проект куда-нибудь. Посмотрю.
www.livexaml.com
www.ammyui.com
www.nemerleweb.com
Re[9]: Почему в Н я не могу использовать локальные ф-ции в к
От: VladD2 Российская Империя www.nemerle.org
Дата: 09.05.12 15:44
Оценка:
Здравствуйте, DarthSidius, Вы писали:

DS>Да я непротив посильной помощи. Что там надо сделать? С учетом того, что пока эти самые (как их там по русски-то?) экспрессионс для меня еще темный лес.


Ты же cам все озвучил вроде.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: Почему в Н я не могу использовать локальные ф-ции в к
От: VladD2 Российская Империя www.nemerle.org
Дата: 09.05.12 15:45
Оценка:
Здравствуйте, DarthSidius, Вы писали:

DS>Да я непротив посильной помощи. Что там надо сделать? С учетом того, что пока эти самые (как их там по русски-то?) экспрессионс для меня еще темный лес.


Только когда будешь переименовывать, сделай алиасы в старых пространствах имен со старыми именами (через директиву type)... для обратной совместимости.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: Почему в Н я не могу использовать локальные ф-ции в к
От: VladD2 Российская Империя www.nemerle.org
Дата: 09.05.12 17:38
Оценка:
Здравствуйте, DarthSidius, Вы писали:

DS>В том то и проблема, что документации для простых смертных — без слез не взглянешь.


Тут проблема в том, что документацию для простых смертных должны писать такие же простые смертные разобравшиеся в проблеме. Иначе получается скучно и не по делу.

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