Зачем нужен F#?

Резюмирую вышесказанное мной:

Когда транслятор выполняет неявные операции, это упрощает задачу, если писать в стиле "напишу, не думая, а транслятор пусть сам решает, что я имел ввиду". Но иногда приводит к неожиданным последствиям. Как, например, в случае знаменитых сишных "if(x=0)" или js-ных "map(parseInt)".

Из всех известных мне ЯП PowerShell - чемпион по количеству и сложности неявных операций. В первую очередь это касается преобразования типов и вывода в консоль.

Формат вывода зависит от контекста (предыдущего вывода).

Почему Get-ScheduledTask выдаёт разный результат

Преобразование типов идёт по сложному алгоритму. Примерно так:

https://devblogs.microsoft.com... ion-magic/

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

Наверное, неявные преобразования удобны, когда тебе нужно выполнять команды в консоли или написать простой скрипт. Проблемы возникают, когда тебе нужно написать сложный скрипт и/или скрипт для других администраторов (на стороне клиентов по всему миру) и/или скрипт, который не перестанет работать на новых версиях ОС (я и с таким сталкивался).

Поэтому лично мне F# более удобен. Но у F# есть два больших недостатка: 1) его мало кто понимает 2) нужно устанавливать дополнительно. Поэтому мне приходится писать на PowerShell (к счастью, редко).