Tôi đã xem các khung công tác web Haskell như Snap và Yesod. Hầu hết dường như thực hiện một cách tiếp cận MVC-ish nhắc tôi về các khung công tác web như Ruby on Rails. Có, MVC có thể đạt được với FP, nhưng IMHO nó không hiển thị những lợi thế lớn của một cách tiếp cận FP. Vì HTTP là một giao thức không trạng thái, tôi đã hy vọng rằng có thể có một khung công tác Haskell có cách tiếp cận chức năng nguyên bản hơn, thuần khiết hơn. Có cái gì không?Có bất kỳ khung công tác web Haskell gốc, chức năng hơn nào không?
Trả lời
Tôi không chắc chắn các tính năng nào trong FP bạn muốn sử dụng khung công tác, nhưng tôi nghĩ Yesod sử dụng một số tính năng để mang lại lợi ích to lớn. (Happstack nào là tốt, nhưng tôi chỉ không phải là quen thuộc với nó.)
URL Type-an toàn loại bỏ toàn bộ một lớp lỗi typo tạo, cộng với tự động đối phó với xác nhận đầu vào.
Nhập đúng cách loại bỏ thực tế các cuộc tấn công XSS.
Tùy thuộc vào phạm vi dữ liệu bạn đang xử lý, sử dụng STM hoặc MVars cho nhu cầu lưu trữ của bạn giúp dễ dàng tránh điều kiện cuộc đua và deadlocks trong các ứng dụng đa luồng.
Tôi chắc chắn có nhiều điều hơn nữa mà tôi không nghĩ đến, nhưng tôi hy vọng điều đó sẽ làm cho vấn đề. Nhưng có lẽ những gì bạn đang tìm kiếm là một cái gì đó giống như một khuôn khổ dựa trên tiếp tục. Cá nhân tôi nghĩ rằng họ là một ý tưởng tồi (tôi là người tin tưởng vào REST), nhưng tôi cho rằng nó có vẻ có vẻ "chức năng hơn".
Cảm ơn câu trả lời của bạn. Sự hiểu biết của tôi về sự tiếp tục là nó thực sự là rất nhiều về nhà nước. Việc sử dụng mô hình trong phát triển web cố gắng đạt được một môi trường mô phỏng đầy đủ. –
Câu trả lời hay nhất cho đến nay. –
Tùy thuộc vào những gì bạn đang cố gắng đạt được. Nếu không có quốc tịch, bạn thực sự có nghĩa là không quốc tịch, tôi sử dụng khuôn khổ templating Hakyll để tạo các trang tĩnh. Nó có một cấu trúc thú vị để đối phó với các phụ thuộc và cập nhật tập tin.
Tôi không có nghĩa là các trang tĩnh. Chỉ cần không có trạng thái chia sẻ giữa các yêu cầu/phản ứng hoặc tác dụng phụ –
Nếu không có trạng thái chia sẻ và không có tác dụng phụ ... Bạn có thể làm những trang tĩnh nào không? – Carl
@Carl: nội dung trang có thể được tạo động tĩnh (tùy thuộc vào thông số yêu cầu). –
Tôi đang tìm kiếm tương tự nhưng chưa thực sự tìm thấy nó. Cụ thể là tôi đang tìm kiếm một phương pháp tiếp tục làm cho các phiên HTTP truyền thống không cần thiết. Các loại khung công tác này khá phổ biến trong Đề án. Gần nhất mà tôi thấy được câu trả lời Chris Eidhof để Arc Thách thức: -
https://gist.github.com/260052
Đó là một nguyên mẫu sơ sài và có lẽ nhiều người đàn ông tháng xa là một cái gì đó mà bạn có thể sử dụng cho công việc nghiêm túc. Nếu kỹ năng Haskell của tôi tốt hơn, tôi có thể bị cám dỗ để thử và phát triển nó.
Tôi cũng tin rằng WASH cũng đã thực hiện phương pháp này nhưng dường như đã chết. Tôi đang ghim hy vọng của mình vào mysnapsession vì tôi tin rằng cũng đang xem xét một cơ sở phiên dựa trên sự tiếp tục sẽ rất thú vị bởi vì tôi đã rất ấn tượng với chất lượng của phần còn lại của Snap và động lực đằng sau nó.
Tôi nghĩ WardB đã không hỏi về các loại ưa thích, mà là về ngữ nghĩa/không có ý nghĩa của FP, ngược lại với ngữ nghĩa bắt buộc/vô điều kiện (và thường không xác định) của những thứ như IO và STM. Đây là khía cạnh biểu thị có hỗ trợ chính xác lý thuyết có thể kéo về được &. Thuật ngữ "chức năng" đã được kéo dài để nắm bắt lập trình bắt buộc/không có kiến thức, điều này thường dẫn đến sự nhầm lẫn. Peter Landin recommended thay thế "chức năng" bằng "ký hiệu" để giúp xóa chính xác loại nhầm lẫn này.
Tôi không biết bất kỳ khung công tác web Haskell có ký hiệu (nonimperative) nào. Có thể sẽ đòi hỏi phải phá vỡ một số thói quen tinh thần lâu đời bắt buộc. Điều cần nói là: công việc thú vị!
- 1. Có bất kỳ khung công tác web MVC nào cho Haskell không?
- 2. Có bất kỳ khung công tác web hiện đại nào (Moose/PSGI) ngoài Catalyst không?
- 3. Có bất kỳ khung công tác web mục tiêu-C nào không?
- 4. Có bất kỳ khung công tác web MVC nào hỗ trợ nhiều loại yêu cầu không?
- 5. Có bất kỳ khung công tác ORM nào cho Web SQL (javascript) không?
- 6. Bất kỳ khung công tác NIO nào cho .NET?
- 7. Có bất kỳ tác dụng phụ nào khi sử dụng cho nhiều chức năng tĩnh không?
- 8. Chức năng tương tác Haskell
- 9. Tìm kiếm khung công tác Flipbook. Bất kỳ lựa chọn thay thế nào cho Turn.js?
- 10. Các khung công tác web Java
- 11. Có bất kỳ nhược điểm tiềm ẩn nào trong việc sử dụng khung công tác Ruby ngoài Rails không?
- 12. Có bất kỳ khung Silverlight hữu ích nào không?
- 13. Xoắn (máy chủ asynch) vs Django (hoặc bất kỳ khung công tác nào khác)
- 14. Có bất kỳ khung công tác duy nhất nào để viết iOS, Android (và thậm chí cả Windows Phone) không?
- 15. Bất kỳ bộ công cụ web C/C++ nào tốt?
- 16. Bất kỳ hướng dẫn nào về khung công tác GWT MVP chính thức?
- 17. Có bất kỳ khung công tác nào để thực hiện các mô hình thời gian thực trong node.js không?
- 18. Có bất kỳ khung công tác Java nào để phân tích cú pháp tệp nhị phân không?
- 19. Có bất kỳ khung công tác tự động nào tốt để áp dụng các chuẩn mã hóa trong Perl không?
- 20. Có bất kỳ bất lợi nào đối với SEAM không?
- 21. Chức năng Razor @helper không hiển thị bất kỳ Html
- 22. Có bất kỳ hàm PHP gốc nào có ném ngoại lệ tích hợp không?
- 23. Kivy có phải là một khung công tác GUI không?
- 24. Có khung công tác P2P trong c không?
- 25. Có bất kỳ tác hại nào trong việc lưu trữ hình ảnh ngoài trang web không?
- 26. Trạng thái hiện tại của nghệ thuật trong khung công tác web Haskell là gì
- 27. SQL Server có bất kỳ loại tính năng hoàn tác ma thuật nào không?
- 28. Bất kỳ khung công tác nào về xác thực và ủy quyền cho ứng dụng biểu mẫu Windows?
- 29. Có bất kỳ công cụ DRYer mã nào không?
- 30. Bất kỳ lý do nào cho mệnh đề GROUP BY không có chức năng tổng hợp?
HTTP có thể là không trạng thái, nhưng các ứng dụng web chắc chắn thì không. –
Vâng, các ứng dụng web bắt chước trạng thái giữa các yêu cầu với những thứ như trạng thái phiên, nhưng có rất ít lý do thực chất để có trạng thái. Nó chỉ là các nhà phát triển được sử dụng để giải quyết nó theo cách đó (như sử dụng các phiên phía máy chủ) –
@WardB: các phiên phía máy chủ cung cấp mức tiết kiệm bảo mật/băng thông sẽ khó đạt được hơn nếu mọi phần dữ liệu được tải xuống khách hàng và phải được truyền lại ở mỗi yêu cầu. Tất nhiên, với HTML5 sắp tới, lưu trữ dữ liệu phiên ở phía máy khách có thể trở nên dễ dàng hơn nhờ vào db sqlite nhúng; nó không giải quyết được câu hỏi bảo mật, tất nhiên. Vẫn là một câu hỏi thú vị :) –