Vì cây cú pháp của Roslyn là bất biến, và làm việc với các trình biên dịch về cơ bản là tất cả về các phép biến đổi (chính xác là lập trình hàm nào là tốt), tôi nghĩ với Roslyn trong F # có thể là một ý tưởng tuyệt vời.
Vì vậy, có khả thi để kết hợp Roslyn và F # không? Có ai đã thử nó trước đây không? Liệu nó có bất kỳ lợi thế hơn bằng cách sử dụng C#? Và nếu có thể, tôi có bắt đầu học F # không?
PS: Tôi có một số kinh nghiệm về lập trình chức năng với Đề án và tôi hiện đang học Haskell, nhưng tôi chưa nếm thử F #.
Sử dụng Roslyn trong F #
Trả lời
Tôi nghĩ rằng bản thân mình sử dụng Roslyn trong F # có thể là một ý tưởng tuyệt vời.
Đó chắc chắn là một ý tưởng tuyệt vời. Một số người đã tự hỏi tại sao Roslyn không được viết bằng F # vì ngôn ngữ rất tốt cho việc viết trình biên dịch (xem http://neildanson.wordpress.com/2012/12/24/the-roslyn-incident/ để tham khảo).
Rất dễ dàng để khớp mẫu trên AST Roslyn khi bạn xác định một tập hợp các composable active patterns. Xem https://gist.github.com/jbevain/01a083c07010bc7b7cd0 như một ví dụ thuyết phục. Kể từ khi AST Roslyn là bất biến, bạn cũng có thể tạo ra combinators để biến đổi chúng dựa trên mục đích của bạn. Các công đoàn phân biệt đối xử có thể được sử dụng như các kiểu dữ liệu ngay lập tức nếu mục tiêu là nhổ ra C# ASTs một lần nữa.
Nhược điểm của việc sử dụng F # là bạn không tìm thấy nhiều ví dụ hoàn chỉnh bằng cách sử dụng API Roslyn trong F #. Chúng tôi có kế hoạch sơ bộ để integrate Roslyn vào Visual F# Power Tools. Giả sử bạn có một giải pháp C#/F # hỗn hợp; nếu bạn muốn đi đến các định nghĩa cho một biểu tượng C# từ một dự án F #, Roslyn là cần thiết để xử lý mã C# cho mục đích đó. Tuy nhiên, điều này đòi hỏi một lượng lớn công việc; Tôi không biết có ai đang làm việc trên nó không.
- 1. Tạo EF CodeFirst DbContext sử dụng Roslyn
- 2. Sử dụng Roslyn tự biên dịch từ trong Visual Studio?
- 3. Sử dụng số f trong số
- 4. Sử dụng hàm F # trong hàm Azure
- 5. sử dụng tùy chỉnh Marshaller trong F #
- 6. Sử dụng điểm số f trong xgb
- 7. Có thể sử dụng CallerMemberNameAttribute trong f #
- 8. Sử dụng Roslyn MSBuildWorkspace với Visual Studio 2013
- 9. Sử dụng System.String.Split từ F #
- 10. Sử dụng Roslyn để biên dịch Bộ điều khiển động
- 11. Roslyn SyntaxNodes có được tái sử dụng không?
- 12. Sử dụng OpenCV từ F #
- 13. Roslyn Scripting
- 14. Sắp xếp và xóa (không sử dụng) bằng cách sử dụng câu lệnh Roslyn script/code?
- 15. Bạn đang sử dụng mã f # nào?
- 16. Sử dụng các thuộc tính assembly trong F #
- 17. Cách sử dụng dấu ngoặc đơn trong F #
- 18. Sử dụng toán tử F # tùy chỉnh trong C#?
- 19. Sử dụng "apt-get -f install" Trong Ansible
- 20. Viết lại C# mã sử dụng Task.WhenAll trong F #
- 21. Roslyn và Debugging
- 22. Làm thế nào để sử dụng một Roslyn thay đổi trong Visual Studio
- 23. Tài liệu API Roslyn
- 24. Tiếp cận .config file trong Roslyn REPL
- 25. Mã Formatting trong Roslyn SDK Preview
- 26. Phiên bản tiêu chuẩn hoặc sử dụng thành ngữ (fn [f & args] (áp dụng f args))
- 27. Làm cách nào để sử dụng ngôn ngữ .net khác (F #) cho asp.net vnext
- 28. VisitClassDeclaration node.Identifier in Roslyn
- 29. Roslyn ObjectPool struct wrapper
- 30. Roslyn - Tạo MetadataReference từ bộ nhớ trong
Tôi biết 'Roslyn' áp dụng' C# ', nhưng thẻ đó (' C# ') áp dụng cho câu hỏi này như thế nào? –
Nguyên nhân ở vị trí đầu tiên là tất cả về thao tác mã C# và cây cú pháp! Mặc dù tôi có thể thấy quan điểm của bạn. – Rsh