Я уверен, что присоединяюсь ко многим в том, что рад, что наконец-то появился мощный язык, тесно связанный с основной средой GUI / Database / Communication.
Я не был уверен, где опубликовать это, но здесь, кажется, лучшее место.
Мне нужно использовать символы символов Юникода в качестве операторов или имен функций. Я бы хотел синтаксический сахар, но он мне не нужен.
Гай Стил указал в «Связях ACM», что «*» был вынужденным выбором, когда он был принят из Ascii как множитель, но мое программное обеспечение работает в Unicode, поэтому я больше не привязан к Ascii.
!
$% & * + - / <=> @ ^ | ~:.
Часть локализации включает в себя местных программистов. Зачем ограничивать набор операторов, которые могут быть определены в F #? Это не ортогонально принятию C # и F # многих Unicode IsLetter в идентификаторах.
Кроме того, F #, вероятно, будет использоваться для символического манипулирования задачами логики, математики, физики и т. Д. Это значительно упрощает работу, если имеется прямое отображение на язык основных операторов. (F # и C # принимают много Unicode IsLetter? Так же как IsDigit '? Это - запрос разрешить Unicode IsSymbol? Как операторы с приоритетом, например, *, или, так как "+" является и унарным и двоичным оператором, Я мог бы смириться с приоритетом + и компенсировать разницу в скобках.
Примите во внимание специфические для предметной области потребности логиков, математиков, физиков и т. Д. Я бы лучше написал символьный дифференциатор или интегратор, используя математические символы, чем перестановки Ascii уже принятых операторов.
- Логика: ∀ ∃ ⇒
- Математика: ∑ ∫ ∂
- Теория групп: ≤ ≥ ∈ ∉
- Теория множеств: ⊆ ⊇ ⊃ ∪ ∩
- Тензорные: ⊗
Я написал много языков на других языках, но поскольку F # тесно интегрирован с .Net, эта проблема создает особые проблемы без языковой поддержки:
Нетрудно сложить транслятор, который берет источник F # Unicode-оператора и построчно сопоставляет его с источником F # оператора Ascii.
Но при отладке, как мне убедиться, что программист все еще видит их непереведенный источник? И что они могут видеть значения переменных.
Операторы и их преобразование тривиальны. Но как мне убедиться, что перевод - это то, что компилируется, пока программист видит свой собственный источник? Если я правильно отображаю строку для строки, как я могу убедиться, что они все еще могут указывать на переменную и видеть ее значение?