Hệ sinh thái để phát triển web Haskell là gì? [đóng cửa]


80

Lấy cảm hứng từ câu hỏi này và một sự việc gần đây , tôi đang tự hỏi điều gì liên quan đến việc phát triển web Haskell.

  • Có bất kỳ khuôn khổ web hoặc công cụ mẫu Haskell nào không?
  • Lưu trữ một trang Haskell sẽ hoạt động như thế nào, có máy chủ web phù hợp không?
  • Haskell có quá phức tạp đối với quy trình làm việc dựa trên tạo mẫu và phát triển nhanh thông thường thường được sử dụng trong phát triển web không?
  • Có ví dụ về các ứng dụng web Haskell hiện có không?

11
Tôi không nghĩ rằng đây là một bản sao. Câu hỏi còn lại là hỏi về việc học Haskell như một ngôn ngữ đầu tiên, để phát triển web. Câu hỏi này đặc biệt hỏi những gì các khuôn khổ, công cụ mẫu và máy chủ web tồn tại. Có lẽ câu hỏi này có thể được làm lại?
Tom Lokhorst

2
Đó chính xác là lý do tại sao tôi chuyển sang câu hỏi khác, chủ yếu là tìm câu trả lời với các khuyến nghị để học các ngôn ngữ khác. Câu hỏi này có một trọng tâm khác, cụ thể là các dự án tập trung vào web trong hệ sinh thái cho Haskell. : - /
dối trá

7
Tôi muốn cái này mở
CiscoIPPhone

@deceze Tôi đã làm lại câu hỏi của bạn một chút. Cụ thể, tôi đã làm cho tiêu đề khác biệt hơn với câu hỏi khác.
Tom Lokhorst

@Tom Cảm ơn! Hy vọng điều này phân biệt nó tốt hơn một chút.
dối trá

Câu trả lời:


18

Trước hết, một tuyên bố từ chối trách nhiệm: Tôi chưa bao giờ thực hiện bất kỳ phát triển web Haskell nào, vì vậy tôi không nói từ kinh nghiệm.

Nếu bạn nhìn vào danh mục Web trên Hackage, có rất nhiều gói liên quan đến web.

Tôi nghĩ rằng hầu hết ứng dụng web Haskell chạy trên một máy chủ tùy chỉnh (có thể sử dụng mod_proxyĐịnh tuyến Yêu cầu Nâng cao của Apache hoặc IIS làm giao diện người dùng). Tuy nhiên, cũng có một số ràng buộc FastCGI.

Cơ sở hạ tầng máy chủ web Haskell / framework / datastorage nổi bật nhất là Happstack , thú vị vì một số lý do, rõ ràng nhất là nó lưu trữ tất cả trạng thái của nó trong bộ nhớ và không sử dụng cơ sở dữ liệu quan hệ.

Một giao diện máy chủ web khác gần đây hơn là hack , mà tôi không biết nhiều về nó ngoại trừ hướng dẫn 1 phút trông rất thú vị.

Có rất nhiều máy chủ web / khung công tác khác trong Haskell, nhưng hai cái này chỉ là những cái tôi biết trên đầu.


36

Tôi đã thực hiện các ứng dụng web sản xuất thực tế trong Haskell. Đây là ngăn xếp tôi đã sử dụng:

  • Chương trình phụ trợ cơ sở dữ liệu PostgreSQL
  • HDBC Postgres để kết nối với nó
  • XHTML để tạo Html. Nó là một cú pháp hơi buồn cười, nhưng ít nhất bạn có trừu tượng hóa lambda.
  • Fastcgi để kết nối phần phụ trợ với lighttpd , thực hiện việc phân phát web.

Toàn bộ ứng dụng web là một chương trình haskell duy nhất, được biên dịch sang mã gốc ghc. Tôi đã viết mã để thực hiện định tuyến yêu cầu (và định tuyến ngược) bằng tay.


14

Tôi đã sử dụng Happstack để tạo một webapp / webservice đơn giản cho mạng nội bộ của chúng tôi.

  • Nó lưu trữ dữ liệu trong bộ nhớ với nhật ký giao dịch để khôi phục (tiêu chuẩn với Happstack). Bạn sẽ không tìm thấy SQL trong mã ở bất kỳ đâu.
  • Không có mẫu. Những gì người ta thường làm với các mẫu, tôi làm trong Javascript. Chỉ cần lấy dữ liệu ở định dạng JSON và đưa nó vào DOM.

Chỉ có 169 dòng mã Haskell, tất cả đều nằm trong Main.hsđó xác định máy chủ. Phần còn lại là Javascript để trình bày và một số Python để thử nghiệm.

Nó là mã nguồn mở, bạn có thể kiểm tra trên GitHub và có thể sử dụng nó như một điểm khởi đầu.


1
Dòng 82, bạn quên một câu kết.
Rayne

10
Haskell cho phép trích dẫn trong mã định danh. Đáng buồn thay, việc đánh dấu cú pháp của github lại vượt qua điều đó.
luntain 17/12/09

9
  • Có bất kỳ khuôn khổ web hoặc công cụ mẫu Haskell nào không?

Có rất nhiều khuôn khổ web. Tìm trong danh mục Web: http://hackage.haskell.org/packages/archive/pkg-list.html#cat:web

Đối với tạo mẫu, HStringTemplate dường như là người dẫn đầu thương hiệu: http://hackage.haskell.org/package/HStringTemplate

  • Lưu trữ một trang Haskell sẽ hoạt động như thế nào, có máy chủ web phù hợp không?

Các tệp nhị phân được liên kết tĩnh chạy máy chủ web của riêng chúng (ví dụ: máy chủ happiness hoặc một trong các máy chủ web Haskell khác), các tệp nhị phân Haskell nói chuyện với Apache, ... hầu như mọi cách kết hợp mà bạn có thể nghĩ đến.

  • Haskell có quá phức tạp đối với quy trình làm việc dựa trên tạo mẫu và phát triển nhanh thông thường thường được sử dụng trong phát triển web không?

Không. Và bạn sẽ được đảm bảo mạnh mẽ hơn rằng ứng dụng không bị lỗi nhờ hệ thống loại.

  • Có ví dụ về các ứng dụng web Haskell hiện có không?

hpaste là một bản demo đơn giản dành cho happiness. Toàn bộ hoạt động kinh doanh của Tupil.com là ứng dụng web Haskell. Deutsche Bank đã có một buổi nói chuyện tại CUFP vào năm ngoái về các khung web Haskell nội bộ của họ (dựa trên happiness).


Chà, Tupil cũng phát triển rất nhiều ứng dụng iPhone (trong Mục tiêu C). Họ không chỉ làm ứng dụng web Haskell.
Tom Lokhorst

7

Đầu tiên, chết tiệt nếu liên kết "ngoại tình" đó không phải là một trong những điều hài hước nhất từ ​​trước đến nay!

Bây giờ, trong khi tôi đã đăng một câu trả lời trên liên kết kia, tôi không nghĩ nhiều điều đang xảy ra ở vùng đất web Haskell. Bạn đã có Happstack và có thể một vài framework khác dường như không đi đến đâu. Sau đó, bạn đã có FastCgi.

Nếu bạn giống như tôi, thì FastCgi có lẽ đủ tốt cho hầu hết các nhu cầu của bạn. Hầu hết các khách hàng, tôi thấy, không thực sự có vấn đề về quy mô (và bên cạnh đó, nó đủ tốt cho những người dùng Ruby, phải không).

Nếu FastCgi không phải là tốc độ của bạn ... thì có lẽ những cú ngáp hoặc nâng (tương ứng là Erlang và Scala) đáng để xem.


Mr Bone đã rất vất vả trong việc này.
Daniel
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.