Обновить
50
0
Friedrich von Never @ForNeVeR

Пользователь

Отправить сообщение

Ну, функции на типах — это самая суть зависимой типизации и есть. Согласуется ли это с понятием коллекции — вопрос дискуссионный. Мой поинт в том, что современные языки с зависимыми типами оперируют вещами на уровне, достаточно близком к приведённым в статье (полу-) формальным определениям.

Мне кажется, вот в языках типа Idris, Agda и Coq так оно и есть. Там типы можно определять перечисляя все возможные значения, либо индуктивно. В любом учебнике вот так определяют натуральные числа:


Z : Nat // ноль — натуральное число
succ Nat : Nat // любое число, следующее за натуральным — натуральное

И получается, что множество натуральных чисел — это бесконечное множество {Z, succ Z, succ (succ Z), ...}.

Истинно так, я тоже замечал.

У меня пока получилось только так:


PS> new-alias curl echo # чтобы скрыть нативную утилиту
PS> curl --version # так не работает
--version
PS> @curl --version # и так не работает
PS> & (gcm -c ap curl) --version # а так работает
curl 7.30.0-DEV (x86_64-pc-win32) libcurl/7.30.0-DEV OpenSSL/1.0.1e zlib/1.2.8 libssh2/1.4.4_DEV
...
PS> & (Get-Command -CommandType Application curl) --version # длинный вариант того же, работает

Слушайте, а что за символ @ такой? Что-то у меня не работает, да и в комментариях B. Payette это подтверждает: https://github.com/PowerShell/PowerShell/issues/1975#issuecomment-241267540


Вот моя PowerShell-сессия (curl у меня установлен и доступен в PATH):


PS> curl --version # ожидаем запуска нативного бинарника, его и получаем
curl 7.30.0-DEV (x86_64-pc-win32) libcurl/7.30.0-DEV OpenSSL/1.0.1e zlib/1.2.8 libssh2/1.4.4_DEV
Protocols: dict file ftp ftps gopher http https imap imaps ldap pop3 pop3s rtsp scp sftp smtp smtps telnet tftp
Features: AsynchDNS IPv6 Largefile NTLM SSL libz
PS> new-alias curl echo
PS> curl --version # ожидаем вызова алиаса, его и получаем
--version
PS> @curl # ожидаем запуска нативного бинарника?
строка:1 знак:1
+ @curl
+ ~~~~~
Оператор с символом "@" невозможно использовать для ссылки на переменные в выражении. "@curl" может использоваться только как аргумент для команды. Для ссылк и на переменные в выражении используйте "$curl".
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : SplattingNotPermitted

Вы можете потренировать управляемость уха, и рулить им довольно успешно и с нужной точностью.

Ну, вроде бы да, хром. И из распространённых приложений больше, пожалуй, никто. Даже Microsoft больше ничего не стал заворачивать (впрочем, я не уверен, и с интересом выслушаю поправки к этому утверждению).

  1. Хочет — пускай привлекает, никто ему мешать не собирается. Есть несколько способов для того, чтобы удалить или обойти эти стандартные алиасы как глобально, так и в рамках скрипта/выражения.
  2. Да, пока было принято такое решение. Оно не окончательное; вот тут обсуждаются варианты.

«Скорее всего не приживётся»? Да даже в том треде нашлась пара человек, которые им пользуются. Как-то за 10 лет прижился — впрочем, я лично всегда эти алиасы удаляю в профиле.


как будет выживать PS на nix с такой политикой

На текущий момент все Unix-like алиасы PowerShell на Linux-системах отключены. Так что это "ломающее изменение" сломало бы только Windows-версию. В версиях под Linux и macOS пока ещё ничего не сломано, т.к. сомнительных алиасов там нет.

Пока что по вашему описанию звучит, как парочка не слишком назойливых багов, а не концептуальная проблема. В любом случае, спасибо за ответ.

Интересу ради — а расскажите, где (в чём) комплишен хуже сделан в PowerShell, чем в баше? Просто начиная с Windows 10, по-моему, в повершелле из коробки подключается PSReadline с подсветкой и семантическим автодополнением. Если честно, я такого изкоробочного опыта ни в одном линуксе не припомню (хотя я положительно уверен, что его можно добиться в баше и в альтернативных шеллах тоже).

Ох уж эти алиасы, в первую очередь убиваю их из профиля. Эта парочка действительно сильно мешается :(

Стоит также упомянуть, что в состав Mono входит утилита xbuild, которая умеет собирать "виндовые" солюшены и проекты. Мы этим пользуемся в нескольких случаях. Собранные бинарники работают и на винде, и на линуксе.

Кроме Psake, посмотрите ещё на Invoke-Build. Оно во многом лучше — особенно когда вам хочется пересобрать из группы файлов только те, которые надо. Например, мне надо было только новые SVG сконвертить в PNG. Это очень просто делается на Make или Invoke-Build, но со скрипом шло на Psake и FAKE.

Про систему дистрибьюции нам то же самое говорили про ClickOnce. И где оно? Наверняка некоторые до сих пор используют, но как массовая система — не выстрелило.

Да, это верно. Лично я никогда не использую алиасы в скриптах (за исключением % и ?), но в 90% случаев использую их в командной строке.

Ну, не забывая, что у Get-ChildItem есть нескольо алиасов а-ля dir, gci, ls (последний, впрочем, пока что отключен на линуксе).

Как пользователю мне абсолютно перпендикулярно, кто и как разрабатывает программы, которыми я пользуюсь — до тех пор, пока это не начинает сказываться на их видимой мне функциональности или стоимости.

А уж как он умильно жаловался на отсутствие /usr/bin/perl.exe, такая была милота :)

Информация

В рейтинге
5 144-й
Откуда
Amsterdam, Noord-Holland, Нидерланды
Зарегистрирован
Активность