Ответ 1
Существует расширение Math (Unicode) для F #, доступное в Галерея Visual Studio.
Это позволяет вам определять символы Unicode, например:
let inline (~∑) xs = xs |> Seq.sum
let total = ∑myList
Я уверен, что присоединяюсь к многим, радуясь тому, что наконец мощный язык тесно связан с основным интерфейсом 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-оператора.
Но когда отладка, как я могу убедиться, что программист все еще видит их нетранслируемый источник? И что они могут видеть переменные значения.
Операторы и их преобразования тривиальны. Но как я могу обеспечить перевод, который компилируется, а программист видит свой собственный источник? Если я правильно рисую строку для строки, как я могу убедиться, что они все равно могут указывать на переменную и видеть ее значение?Существует расширение Math (Unicode) для F #, доступное в Галерея Visual Studio.
Это позволяет вам определять символы Unicode, например:
let inline (~∑) xs = xs |> Seq.sum
let total = ∑myList
Другие языки, такие как Scala, разрешают операторам вне диапазона ASCII - математические символы (Sm) и другие символы (So)
Вам может быть интересно Project Fortress, который является новым функциональным языком программирования, который охватывает набор символов Unicode (среди многих других функций). В частности, см. Страницу "Математический синтаксис в крепости" , в которой содержится пример кода.
Для интересного обсуждения этой проверки: http://cs.hubfs.net/forums/thread/9690.aspx