2009-07-21 22 views
12

Tôi chắc chắn rằng tôi tham gia nhiều người trong sự vui mừng cuối cùng là một ngôn ngữ mạnh mẽ gắn chặt với một khung chính GUI/Cơ sở dữ liệu/Truyền thông.Nếu nhà khai thác Ascii có thể xác định được, tại sao không phải là Biểu tượng Unicode?

Tôi chưa chắc chắn nơi đăng bài này, nhưng ở đây có vẻ là điểm tốt nhất.

Tôi cần phải sử dụng ký tự biểu tượng Unicode làm toán tử hoặc làm tên hàm. Tôi muốn đường cú pháp, nhưng tôi không cần nó.

Guy Steele chỉ ra trong Truyền thông của ACM rằng "*" là một lựa chọn bắt buộc khi nó được sử dụng từ Ascii như nhân, nhưng phần mềm của tôi hoạt động trong Unicode, vì vậy tôi không bị buộc vào Ascii nữa.

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

Một phần của nội địa hóa bao gồm các lập trình viên địa phương?. Tại sao giới hạn tập hợp các toán tử có thể được xác định trong F #? Nó không trực giao với C# và F # chấp nhận nhiều Unicode IsLetter trong số nhận dạng.

Ngoài ra, F # có thể được sử dụng để thao tác tượng trưng cho các vấn đề từ logic, toán học, vật lý, v.v. Nó làm việc dễ dàng hơn nhiều nếu có ánh xạ trực tiếp vào ngôn ngữ của các toán tử cơ bản. (F # và C# chấp nhận nhiều Unicode IsLetter? Cũng như IsDigit '? Đây là một yêu cầu cho phép Unicode IsSymbol? Là nhà khai thác có quyền ưu tiên, ví dụ, *, hoặc, vì “+” vừa là toán tử đơn và nhị phân, Tôi có thể đưa ra sự ưu tiên của + và tạo nên sự khác biệt với các nhóm được tạo dấu ngoặc đơn

Xem xét các nhu cầu cụ thể về miền của các nhà logic, toán học, vật lý, v.v. hơn hoán vị Ascii của nhà khai thác đã-lấy

  • logic:. ∀ ∃ ⇒
  • Math: Σ ∫ ∂
  • lý thuyết Nhóm: ≤ ≥ ∈ ∉
  • Set Theory: ⊆ ⊇ ⊃ ∪ ∩
  • tensors: ⊗

Tôi đã viết nhiều ngôn ngữ trong các ngôn ngữ khác, nhưng vì F # là chặt .Net- được tích hợp, vấn đề này đặt ra những thách thức đặc biệt mà không cần hỗ trợ ngôn ngữ:

Nó nhỏ nhặt để biên dịch một nhà dịch mã Unicode F # nguồn và ánh xạ nó, từng dòng, tới nguồn F # của Ascii.

Nhưng khi gỡ lỗi, làm cách nào để đảm bảo lập trình viên vẫn nhìn thấy nguồn chưa được dịch của họ? Và họ có thể thấy các giá trị biến đổi.

Nhà khai thác và chuyển đổi chúng là không đáng kể. Nhưng làm thế nào để đảm bảo bản dịch là những gì được biên dịch, trong khi lập trình viên thấy nguồn của riêng họ? Nếu tôi lập bản đồ cho từng dòng một cách chính xác, làm cách nào để đảm bảo chúng vẫn có thể trỏ vào một biến và thấy giá trị của nó?

+0

Tôi đã thêm f # thẻ, nhưng làm như vậy tôi phải thoát khỏi thẻ toán. Tôi nghĩ rằng đó là một thương mại công bằng (vấn đề cốt lõi ở đây là một cái gì đó f # người có thể bây giờ về, chứ không phải là một cái gì đó cho các nhà toán học suy ngẫm) – tialaramex

+3

Xem thêm http://cs.hubfs.net/forums/thread/9690.aspx – Brian

Trả lời

1

ngôn ngữ khác, chẳng hạn như Scala, làm nhà khai thác giấy phép từ bên ngoài phạm vi ASCII - ký hiệu toán học (Sm) và các ký hiệu khác (So)

1

Bạn có thể quan tâm đến Project Fortress mà là một ngôn ngữ lập trình chức năng mới bao gồm bộ ký tự Unicode (trong số nhiều tính năng khác). Cụ thể, hãy xem trang Mathematical Syntax in Fortress chứa một số mã mẫu.

+0

mạnh mẽ trong F # vì .Net có thể được sử dụng để tạo ra bất kỳ ứng dụng nào không cần hiệu năng C++. Và Pháo đài Dự án nghe có vẻ thú vị. Cảm ơn. –

2

Có một phần mở rộng biểu tượng toán học (Unicode) cho F # có sẵn trong Visual Studio Gallery.

này cho phép bạn xác định ký tự Unicode, ví dụ .:

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

let total = ∑myList 
Các vấn đề liên quan