Các loại lớp cơ bản như Show
, Eq
và Ord
phải dễ nắm bắt bằng cách đọc tài liệu thư viện do Hoogle và/hoặc Haskell-2010 Language Report tìm thấy.
Tháp số trong Haskell dường như phức tạp (loại Int
là một thể hiện của các lớp kiểu whooping 11 theo báo cáo), nhưng nó chỉ hỗ trợ tất cả các loại số hữu ích và số đại diện toán học được phát minh cho chúng tôi: ví dụ: Integer
là số nguyên có kích thước tùy ý, Int
là số nguyên có kích thước bằng máy bình thường và biểu diễn Peano lười biếng của số nguyên (không phải trong thư viện chuẩn) tỏ ra hữu ích trong việc triển khai các thuật toán đồ thị. Các loại lớp số quan trọng nhất là Num
và Integral
. Bạn có thể chuyển đổi giữa các loại số nguyên khác nhau bằng cách sử dụng các hàm fromIntegral
. Cũng lưu ý rằng các số như 123 có loại Num a => a
và có cơ chế mặc định kiểu đặc biệt được thiết kế để giảm nhu cầu khai báo kiểu để chỉ định loại số chính xác mà bạn cần. Trong trường hợp sử dụng nâng cao, điều này có tác dụng với bạn, do đó bạn có thể muốn thay đổi các giá trị mặc định.
Tình huống tương tự là với các loại chuỗi khác nhau: không có đại diện đơn lẻ nào phù hợp với tất cả, vì vậy nhiều biểu tượng trong tự nhiên: String
, Data.ByteString
và Data.Text
là quan trọng nhất.
Về các lớp loại phức tạp hơn, nguồn tốt nhất là Typeclassopedia.
Đối với các loại lớp nhất định như Monad
, Applicative
và Arrow
, có rất nhiều hướng dẫn và nghiên cứu chuyên dụng. Tùy thuộc vào kỹ năng toán học của bạn, bạn cũng có thể muốn đọc các bài báo nghiên cứu ban đầu về các khái niệm lý thuyết thể loại đằng sau các loại lớp như "Khái niệm tính toán và monads" xuất sắc của Eugenio Moggi.
Đối với "giảm eta", nó được gọi là Point-Free Style. Bạn có thể nhận được một số thông tin từ các tài liệu tham khảo được đề cập tại liên kết đó.Bạn cũng có thể xem Combinatory Logic, một bài báo năm 1978 bởi John Backus Can programming be liberated from von neumann style? và ngôn ngữ lập trình APL để có được một quan điểm lịch sử phong phú hơn về phong cách không có điểm.
Ngoài ra còn có những cuốn sách tổng quát về Haskell như 'Giới thiệu nhẹ nhàng cho Haskell' và 'Tìm hiểu bạn một Haskell cho Great Good'.
Đối với ưu tiên điều hành - có thực sự vài nhà khai thác bạn phải nhớ: (.)
, ($)
và (>>=)
được sử dụng nhiều hơn mọi thứ khác (trừ arithmetics tất nhiên nhưng toán tử số học khá ngạc nhiên).
Cú pháp cho tuples và danh sách có vẻ không mang tính biểu tượng đối với tôi. Chỉ là thừa: foo : bar : []
giống với [foo, bar]
và (,) foo bar
giống với (foo, bar)
. Các phiên bản tiền tố của các bộ dữ liệu có số lượng cao hơn như (,,,,)
hiếm khi được sử dụng.
Xem thêm http://www.haskell.org/haskellwiki/Section_of_an_infix_operator để được giải thích về các cấu trúc như (+ 2)
và (2 +)
được gọi là các phần.
Ngoài ra, bạn có thể học hỏi từ những thay đổi mà công cụ HLint gợi ý để cải thiện mã của bạn. Tệp thực thi HLint có thể được cài đặt bởi cabal install HLint
. Đối với các chủ đề nâng cao, tôi có thể khuyên bạn nên nghiên cứu cấu trúc dữ liệu hoàn toàn chức năng (cho phép bạn thiết kế cấu trúc dữ liệu bất biến hiệu quả và lý do về thời gian tiêu thụ), gọi bằng cách tính toán lambda (cho phép bạn giải thích về những gì được đánh giá và thứ tự) , Hệ thống kiểu Fc (cung cấp cho bạn một số nền tảng về cách trình kiểm tra kiểu haskell hoạt động), ngữ nghĩa denotational (lý luận về không chấm dứt, một phần và đệ quy, và cũng có một số hiểu biết về các khái niệm về độ chặt chẽ, độ tinh khiết và tính tương thích).
Tôi nghĩ rằng việc học cách "đọc" haskell theo nghĩa đen là một trợ giúp lớn trong việc học cách đọc haskell cho ý nghĩa: http://stackoverflow.com/questions/7746894/are-there-pronounceable-names-for-common- haskell-operator – sclv
Như một sang một bên, bạn có thể muốn xem xét [các ngôn ngữ ghép nối] (http://en.wikipedia.org/wiki/Concatenative_programming_language) chẳng hạn như [Factor] (http://en.wikipedia.org/wiki/Factor_% 28programming_language% 29), cũng như gói [pointfree] (http://hackage.haskell.org/package/pointfree) Haskell, để thông báo khả năng của bạn và mong muốn viết theo kiểu không có điểm. –
[Stanford notesure notes] (http://www.scs.stanford.edu/11au-cs240h/notes/) và [trang ezyang] (http://ezyang.com/haskell.html) rất hữu ích –