Список хотелок
От: Ka3a4oK  
Дата: 28.07.11 09:35
Оценка:
Хочется:

1. Возмжность рекурсивного вызова лямбды. Варианты реализации:
а)именнованные лямбды
    SomeList.Map(fun LambdaName(a){... LambdaName(x)})

б)специальное ключевое слово:
    SomeList.Map(fun(a){... selfcall(x)})


2. Параметр по умолчанию-лямбда
  SomeFunctionWithPossibleFiltration(a:list[int], filt_func:int->bool=fun(_){true})
  {
   ...
  }

3. Метод у Hashtable, типа Get, но который бы возвращал не option[Value], а Value, но при этом генерировал бы эксепшн, если ключ не найден.
Re: Список хотелок
От: VladD2 Российская Империя www.nemerle.org
Дата: 28.07.11 15:01
Оценка:
Здравствуйте, Ka3a4oK, Вы писали:

KK>Хочется:


KK>1. Возмжность рекурсивного вызова лямбды. Варианты реализации:

KK> а)именнованные лямбды
KK>
KK>    SomeList.Map(fun LambdaName(a){... LambdaName(x)})
KK>

KK> б)специальное ключевое слово:
KK>
KK>    SomeList.Map(fun(a){... selfcall(x)})
KK>


На мой взгляд — совершенно не нужная вещь. Экономии три копейки, применяться будет раз в год.
Лямбды имеют смысл только когда они очень короткие (буквально несколько символов). Функция с рекурсивыным вызовом уже по определению не может быть короткой. Стало быть имеет смысл выносить ее в локальную функцию:
def functionName(a){ ... functionName(x) }
SomeList.Map(functionName)

Это и читается лучше.
Если ух очень хочется по месту использовать, то можно так:
SomeList.Map({def functionName(a){ ... functionName(x) }; functionName})

Собственно, именно в такой код и разворачиваются ламбды.

KK>2. Параметр по умолчанию-лямбда

KK>
KK>  SomeFunctionWithPossibleFiltration(a:list[int], filt_func:int->bool=fun(_){true})
KK>  {
KK>   ...
KK>  }
KK>


Это более общий вопрос (хотелака) — позволять задавать в качестве значения по умолчанию функции любое выражение языка. Это уже обсуждалось и вроде как было одобрено. Но это требует не мало работы. К сожалению в дотнете не предусматривается подобной возможности. Так что решение будет работать только в рамках немерла.

Для локальных функций подобная инициализация и так доступна.

Если никто из внешних контребьютеров не займется этой фичей для Н1, то по всей видимости это будет реализовано только в Н2.

KK>3. Метод у Hashtable, типа Get, но который бы возвращал не option[Value], а Value, но при этом генерировал бы эксепшн, если ключ не найден.


Такой метод есть — это индексатор. Пиши hashTable[key] и будет тебе счастье.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Список хотелок
От: febus Германия  
Дата: 11.08.11 21:26
Оценка: 2 (1)
Здравствуйте, VladD2, Вы писали:

А у меня такая хотелка:
1. В проекте на С#, при нажатии комбинации "ctrl + .", в момент, когда курсор стоит на неизвестном классе,
автоматически открывается меню с предложением вставить нужный using.
Скажем, я хочу использовать класс WebClient. Ну не помню я, в каком он неймспейсе.
Пишу "WebClient", жму "ctrl + ." и автоматически предлагается подключить неймспейс System.Net.

2. Все то же форматирование кода табами, — не работает. Я создавал https://github.com/rsdn/nemerle/issues/7в багтрекере. Ее отметили как решенную.
В свежих сборках как не было, так и нет. Вернее сразу, как пофиксили работало, но теперь снова нет.
Может необходимы какие-либо настройки в студии?
Re[3]: Список хотелок
От: VladD2 Российская Империя www.nemerle.org
Дата: 12.08.11 13:34
Оценка:
Здравствуйте, febus, Вы писали:

F>А у меня такая хотелка:

F>1. В проекте на С#, при нажатии комбинации "ctrl + .", в момент, когда курсор стоит на неизвестном классе,
F>автоматически открывается меню с предложением вставить нужный using.
F>Скажем, я хочу использовать класс WebClient. Ну не помню я, в каком он неймспейсе.
F>Пишу "WebClient", жму "ctrl + ." и автоматически предлагается подключить неймспейс System.Net.

Используй Import complation. Это не тоже самое, но добиться того же эффекта легко.


F>2. Все то же форматирование кода табами, — не работает. Я создавал https://github.com/rsdn/nemerle/issues/7в багтрекере. Ее отметили как решенную.

F>В свежих сборках как не было, так и нет. Вернее сразу, как пофиксили работало, но теперь снова нет.
F>Может необходимы какие-либо настройки в студии?

Естественно, необходимы. Нужно зайти в Tools\Options и в ветке Text "Editor\Nemerle\Advanced" переключить "Use smart tab" в false.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Список хотелок
От: YF Германия  
Дата: 22.08.11 20:54
Оценка:
Здравствуйте, VladD2, Вы писали:
F>>Пишу "WebClient", жму "ctrl + ." и автоматически предлагается подключить неймспейс System.Net.
VD>Используй Import complation. Это не тоже самое, но добиться того же эффекта легко.
И где эту фичу можно увидеть? В контекстном меню ее нет.

Еще вопрос. Я попытался открыть Nemerle-2008.sln в 2008-й студии. Сначала ругается, что не может найти файл Nemerle.msbuild.targets в каталоге boot.
Ok, я нашел и добавил его туда вручную. Тогда солюшн открывается.
В контекстном меню есть привычные фунции "Go to declaration/definition". Хотелось пошарить по исходникам. Так быстрее. Но они не работают. Не работают и не должны или что-то не так?
Re[5]: Список хотелок
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.08.11 21:02
Оценка:
Здравствуйте, YF, Вы писали:

VD>>Используй Import complation. Это не тоже самое, но добиться того же эффекта легко.

YF>И где эту фичу можно увидеть? В контекстном меню ее нет.

https://github.com/rsdn/nemerle/issues/24

YF>Еще вопрос. Я попытался открыть Nemerle-2008.sln в 2008-й студии. Сначала ругается, что не может найти файл Nemerle.msbuild.targets в каталоге boot.


Он не предназначен для использования в интеграции. Там много хитрых проблем. Долго объяснять.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Список хотелок
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.08.11 21:06
Оценка:
Здравствуйте, VladD2, Вы писали:

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


VD>>>Используй Import complation. Это не тоже самое, но добиться того же эффекта легко.

YF>>И где эту фичу можно увидеть? В контекстном меню ее нет.

VD>https://github.com/rsdn/nemerle/issues/24


Да... Фича доступна только в VS 2010.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Список хотелок
От: YF Германия  
Дата: 22.08.11 21:14
Оценка:
Здравствуйте, VladD2, Вы писали:
YF>>И где эту фичу можно увидеть? В контекстном меню ее нет.
VD>https://github.com/rsdn/nemerle/issues/24
Становлюсь на webclient, жму shift-alt-space и вижу лишь виноусовскую стандартную менюшку слева вверху, "изменить размер, ... закрыть приложение".

YF>>Еще вопрос. Я попытался открыть Nemerle-2008.sln в 2008-й студии. Сначала ругается, что не может найти файл Nemerle.msbuild.targets в каталоге boot.

VD>Он не предназначен для использования в интеграции. Там много хитрых проблем. Долго объяснять.
И не нужно, я врядли пойму такие дебри.
Так а "Go to definition", oн есть?
Re[7]: Список хотелок
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.08.11 22:15
Оценка:
Здравствуйте, YF, Вы писали:

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

YF>>>И где эту фичу можно увидеть? В контекстном меню ее нет.
VD>>https://github.com/rsdn/nemerle/issues/24
YF>Становлюсь на webclient, жму shift-alt-space и вижу лишь виноусовскую стандартную менюшку слева вверху, "изменить размер, ... закрыть приложение".

У меня работает. Значит, ты используешь не ту версию IDE. Как я уже говорил — эта фича доступна только в VS 2010, и только при сборке из исходников последней версии.

YF>>>Еще вопрос. Я попытался открыть Nemerle-2008.sln в 2008-й студии. Сначала ругается, что не может найти файл Nemerle.msbuild.targets в каталоге boot.

VD>>Он не предназначен для использования в интеграции. Там много хитрых проблем. Долго объяснять.
YF>И не нужно, я врядли пойму такие дебри.
YF>Так а "Go to definition", oн есть?

Да.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: Список хотелок
От: YF Германия  
Дата: 22.08.11 22:34
Оценка:
Здравствуйте, VladD2, Вы писали:
VD>У меня работает. Значит, ты используешь не ту версию IDE. Как я уже говорил — эта фича доступна только в VS 2010, и только при сборке из исходников последней версии.
Да, я прочитал уже в другом сообщении, да и на гите есть местка vs2010.

YF>>Так а "Go to definition", oн есть?

VD>Да.

Тоже только в 2010-й студи?
В 2008-ой не работает.

Еще вопрос. Для сборки 2010-й студии необходимо ставить
— SP1
— SDK SP1?
А то у меня не выходит собрать ее из исходников. Ругается вот так:

D:\GitRepository\nemerle\snippets\VS2010\Nemerle.VisualStudio\Nemerle.VisualStu
dio.csproj(744,3): error MSB4019: The imported project "C:\Program Files\MSBuil
d\Microsoft\VisualStudio\v10.0\VSSDK\Microsoft.VsSDK.targets" was not found. Co
nfirm that the path in the <Import> declaration is correct, and that the file e
xists on disk.
Done Building Project "D:\GitRepository\nemerle\snippets\VS2010\Nemerle.VisualS
tudio\Nemerle.VisualStudio.csproj" (Build target(s)) -- FAILED.

Done Building Project "D:\GitRepository\nemerle\NemerleAll.nproj" (DevBuildQuic
k target(s)) -- FAILED.


Build FAILED.

"D:\GitRepository\nemerle\NemerleAll.nproj" (DevBuildQuick target) (1) ->
"D:\GitRepository\nemerle\Nemerle.Compiler.nproj" (Build target) (4) ->
(CoreCompile target) ->
ncc\generation\HierarchyEmitter.n(104,11,104,52): warning : N618: field: stat
ic RequestMinimum : System.Security.Permissions.SecurityAction; is obsolete: 'A
ssembly level declarative security is obsolete and is no longer enforced by the
CLR by default. See http://go.microsoft.com/fwlink/?LinkID=155570 for more inf
ormation.' [D:\GitRepository\nemerle\Nemerle.Compiler.nproj]
ncc\generation\HierarchyEmitter.n(105,11,105,53): warning : N618: field: stat
ic RequestOptional : System.Security.Permissions.SecurityAction; is obsolete: '
Assembly level declarative security is obsolete and is no longer enforced by th
e CLR by default. See http://go.microsoft.com/fwlink/?LinkID=155570 for more in
formation.' [D:\GitRepository\nemerle\Nemerle.Compiler.nproj]
ncc\generation\HierarchyEmitter.n(106,11,106,51): warning : N618: field: stat
ic RequestRefuse : System.Security.Permissions.SecurityAction; is obsolete: 'As
sembly level declarative security is obsolete and is no longer enforced by the
CLR by default. See http://go.microsoft.com/fwlink/?LinkID=155570 for more info
rmation.' [D:\GitRepository\nemerle\Nemerle.Compiler.nproj]
ncc\generation\HierarchyEmitter.n(113,9,113,61): warning : N618: method Syste
m.AppDomain.DefineDynamicAssembly(name : System.Reflection.AssemblyName, access
: System.Reflection.Emit.AssemblyBuilderAccess, dir : string, requiredPermissi
ons : System.Security.PermissionSet, optionalPermissions : System.Security.Perm
issionSet, refusedPermissions : System.Security.PermissionSet) : System.Reflect
ion.Emit.AssemblyBuilder is obsolete: 'Assembly level declarative security is o
bsolete and is no longer enforced by the CLR by default. See http://go.microsof
t.com/fwlink/?LinkID=155570 for more information.' [D:\GitRepository\nemerle\Ne
merle.Compiler.nproj]


"D:\GitRepository\nemerle\NemerleAll.nproj" (DevBuildQuick target) (1) ->
"D:\GitRepository\nemerle\snippets\VS2010\Nemerle.VisualStudio\Nemerle.VisualSt
udio.csproj" (Build target) (12) ->
D:\GitRepository\nemerle\snippets\VS2010\Nemerle.VisualStudio\Nemerle.VisualS
tudio.csproj(744,3): error MSB4019: The imported project "C:\Program Files\MSBu
ild\Microsoft\VisualStudio\v10.0\VSSDK\Microsoft.VsSDK.targets" was not found.
Confirm that the path in the <Import> declaration is correct, and that the file
exists on disk.

4 Warning(s)
1 Error(s)

Time Elapsed 00:01:49.43

D:\GitRepository\nemerle>rem /verbosity:n /p:TargetName=Build

D:\GitRepository\nemerle>IF 1 == 0 call Reg-bins-2-4.0.cmd

D:\GitRepository\nemerle>pause
Press any key to continue . . .

Re[9]: Список хотелок
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.08.11 22:49
Оценка:
Здравствуйте, YF, Вы писали:

YF>Тоже только в 2010-й студи?

YF>В 2008-ой не работает.

В 2008 тоже работает. Просто могут быть случаи в которых что-то глючит. Ну, и на проекте компилятора вообще ничего работать не может.

YF>Еще вопрос. Для сборки 2010-й студии необходимо ставить

YF>- SP1
YF>- SDK SP1?

Да. На машине должно стоять: VS 2010 SP1 и VS 2010 SDK SP1. Саму сборку нужно производить из под администратора. Проще всего запустить из под администратора (в контекстом меню пункт Ran As Adminstrator) некий файловый менеджер (Total Commander или FAR), а из него уже батник DevBuildQuick-4.cmd

После установки лучше перезагрузиться, так как пути прописываются в системе, а некоторые приложения их не умеют обновлять.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[10]: Список хотелок
От: YF Германия  
Дата: 22.08.11 23:26
Оценка:
Здравствуйте, VladD2, Вы писали:
VD>Да. На машине должно стоять: VS 2010 SP1 и VS 2010 SDK SP1. Саму сборку нужно производить из под администратора. Проще всего запустить из под администратора (в контекстом меню пункт Ran As Adminstrator) некий файловый менеджер (Total Commander или FAR), а из него уже батник DevBuildQuick-4.cmd
VD>После установки лучше перезагрузиться, так как пути прописываются в системе, а некоторые приложения их не умеют обновлять.

Собрал VS 2010.
А фичи как не было, так и нет. То же самое. Может быть, что решарпер перекрывает сочетание клавиш alt-shift-space?
Выскакивает стандартная менюха, как если нажать alt-space.
Исходники новые.
Re[11]: Список хотелок
От: VladD2 Российская Империя www.nemerle.org
Дата: 23.08.11 00:29
Оценка:
Здравствуйте, YF, Вы писали:

YF>А фичи как не было, так и нет. То же самое. Может быть, что решарпер перекрывает сочетание клавиш alt-shift-space?


Решарпер то? Легко!
Еще может быть, что шорткат у тебя уже переопределен.

YF>Выскакивает стандартная менюха, как если нажать alt-space.

YF>Исходники новые.

Попробуй зайти в настройки и найти команду Edit.DisplayImportCompletion.
Если ее нет, то что-то не так с собранной интеграцией.

Если команда есть, то посмотри что назначено на указанный шортка, и попробуй задать для Edit.DisplayImportCompletion другой (или тот же) шорткат.

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