Подтвердить что ты не робот

Если операторы Ascii являются определяемыми, почему бы не символы Unicode?

Я уверен, что присоединяюсь к многим, радуясь тому, что наконец мощный язык тесно связан с основным интерфейсом GUI/Database/Communication.

Я не был уверен, где разместить это, но здесь кажется лучшим местом.

Мне нужно использовать символы символа Unicode либо как операторы, либо как имена функций. Я бы хотел синтаксический сахар, но мне это не нужно.

Гай Стил указал в сообщениях ACM, что "*" был вынужденным выбором, когда он был принят из Ascii как многократно, но мое программное обеспечение работает в Unicode, поэтому я больше не привязан к Ascii.

!

$% & * + -/< = > @^ | ~:.

Часть локализации включает в себя локальных программистов. Зачем ограничивать набор операторов, которые могут быть определены в F #? Он не ортогонален принятию С# и F # многих Unicode IsLetter в идентификаторах.

Кроме того, F #, вероятно, будет использоваться для символического манипулирования задачами из логики, математики, физиков и т.д. Это облегчает работу, если theres прямое отображение на язык основных операторов. (F # и С# принимают много Unicode IsLetter?, А также IsDigit? Это запрос разрешить Unicode IsSymbol? Как операторы с приоритетом, например, *, или, поскольку "+" является и унарным, и двоичным оператором, я может мириться с приоритетом + и составлять разницу с скобками в скобках.

Рассмотрим специфические для домена потребности логиков, математиков, физиков и т.д. Id скорее напишет символический дифференциатор или интегратор, используя математические символы, чем перестановки Ascii уже принятых операторов.

  • Логика: ∀ ∃ ⇒
  • Математика: Σ ∫ ∂
  • Теория групп: ≤ ≥ ∈ ∉
  • Теория набора: ⊆ ⊇ ⊃ ∪ ∩
  • Тензоры: ⊗

Ive написал много языков на других языках, но поскольку F # тесно интегрирована .Net, эта проблема создает особые проблемы без поддержки языка:

Его тривиально, чтобы перебирать переводчик, который берет Unicode-оператор F # source и сопоставляет его по строкам с исходным кодом F # Ascii-оператора.

Но когда отладка, как я могу убедиться, что программист все еще видит их нетранслируемый источник? И что они могут видеть переменные значения.

Операторы и их преобразования тривиальны. Но как я могу обеспечить перевод, который компилируется, а программист видит свой собственный источник? Если я правильно рисую строку для строки, как я могу убедиться, что они все равно могут указывать на переменную и видеть ее значение?
4b9b3361

Ответ 1

Существует расширение Math (Unicode) для F #, доступное в Галерея Visual Studio.

Это позволяет вам определять символы Unicode, например:

let inline (~∑) xs = xs |> Seq.sum

let total = ∑myList

Ответ 2

Другие языки, такие как Scala, разрешают операторам вне диапазона ASCII - математические символы (Sm) и другие символы (So)

Ответ 3

Вам может быть интересно Project Fortress, который является новым функциональным языком программирования, который охватывает набор символов Unicode (среди многих других функций). В частности, см. Страницу "Математический синтаксис в крепости" , в которой содержится пример кода.