Ưu đãi trong tuần: Nhập mã UD50 giảm 50k cho đơn từ 300k!
Trang chủ
Menu

Haskell for Beginners: Transform How You Think About Code

Haskell: Nguyên lý, Mẫu hình và Góc nhìn

Haskell: Nguyên lý, Mẫu hình và Góc nhìn

Nắm vững Ý tưởng Cốt lõi và Nguyên tắc Thiết kế của Haskell

4.3
(132 đánh giá)
10,631 học viên
Giảng viên
ProgLang MainSt.
Phụ đề Việt chất lượng cao Phụ đề tiếng Anh Bán chạy Đánh giá cao
50.000đ 349.000đ -86%
✓ Xem giỏ hàng và thanh toán
Bao gồm phụ đề tiếng Việt, tiếng Anh
8.0 giờ video
112 bài giảng
Truy cập vĩnh viễn
Học trên mọi thiết bị
Cập nhật: 30/05/2026

Bạn sẽ học được gì

Cách viết chương trình Haskell hoàn chỉnh, có cấu trúc đúng bằng main, do-notation và cách thụt dòng rõ ràng
Cách sử dụng hiệu quả biến, khai báo cấp cao nhất, liên kết let cục bộ và mệnh đề where
Cách làm việc với các kiểu dữ liệu cốt lõi của Haskell: số, ký tự, chuỗi, tuple, danh sách, khoảng và kiểu dữ liệu đại số tùy chỉnh
Cách sử dụng khớp mẫu (mẫu literal, tuple, danh sách và constructor) để viết các hàm rõ ràng và biểu cảm
Cách sử dụng guard, biểu thức case và logic rẽ nhánh một cách tự nhiên
Cách viết hàm đệ quy và sử dụng hàm bậc cao như map, filter, foldr và foldl
Cách hiểu và sử dụng suy luận kiểu, chú thích kiểu, typeclass (Show, Eq, Ord, Num, v.v.) và đa hình
Cách làm việc an toàn với Maybe, Either và phân tích có xử lý lỗi
Cách thực hiện nhập/xuất bằng kiểu IO, do-notation và liên kết monadic
Cách tổ chức mã thành module, sử dụng import (qualified, selective, hidden) và thiết kế API sạch sẽ
Cách tư duy hàm: tính thuần khiết, tính minh bạch tham chiếu, tính bất biến và đánh giá lười
Thiết kế của Haskell liên quan thế nào đến các khái niệm sâu hơn như lambda calculus và lý thuyết lập trình hàm
Haskell phát triển lịch sử ra sao (ML, Miranda, Ủy ban Haskell, Haskell 98/2010, GHC) và hệ sinh thái Haskell hiện đại hoạt động thế nào

Yêu cầu

Nên biết một ngôn ngữ lập trình khác, nhưng không bắt buộc.

Đối tượng phù hợp

Người học mới làm quen với Haskell và muốn có một hướng dẫn nhập môn có cấu trúc, toàn diện
Người học đã có một số kinh nghiệm lập trình (bằng bất kỳ ngôn ngữ nào) và muốn khám phá lập trình hàm
Người học muốn hiểu Haskell "từ trong ra ngoài", bao gồm cả kỹ năng thực hành và lý thuyết nền tảng
Người học quan tâm đến ngôn ngữ lập trình, hệ thống kiểu hoặc nền tảng toán học của tính toán
Người học muốn phát triển tư duy giải quyết vấn đề sạch sẽ, theo phong cách hàm
Người học có kế hoạch làm việc với ngôn ngữ hàm có kiểu mạnh hoặc khám phá Haskell cho nghiên cứu, công nghiệp hoặc dự án cá nhân
Người học đánh giá cao khóa học giải thích tại sao mọi thứ hoạt động, không chỉ cách viết cú pháp

Nội dung khóa học

17 phần • 112 bài giảng
1 Tạo một Chương trình Haskell Tối giản
2 Quy tắc Bố cục và Cách thụt dòng trong Haskell
3 Chú thích và Quy ước Đặt tên trong Haskell
4 Literal: Số, Ký tự, Chuỗi và Boolean
5 Khám phá cú pháp literal trong Haskell: literal nguyên và thực dấu phẩy động (và tính đa hình của chúng)
6 Biểu thức Cốt lõi: if-then-else, let, where và case
1 Biểu thức, Giá trị và Đánh giá
2 Định nghĩa Hàm, Currying và Ứng dụng Một phần
3 Giải thích Suy luận Kiểu của Haskell
4 Viết Chữ ký Kiểu và Ràng buộc Rõ ràng
5 Khớp Mẫu trên Đối số Hàm
6 Guard, Liên kết Cục bộ và Biểu thức Case
1 Xây dựng và Thao tác Danh sách
2 Tuple, Cặp và Cơ bản về Chuỗi
3 List Comprehensions và Bộ sinh
4 Thao tác Danh sách Cần thiết và Lưu ý An toàn
5 Mẫu hình Đệ quy để Xử lý Danh sách
6 Công cụ Bậc Cao: map, filter và fold
1 Định nghĩa Kiểu Dữ liệu Đại số (Tổng và Tích)
2 Type Synonyms và newtype: Lựa chọn Nhẹ nhàng
3 Cú pháp Bản ghi và Cập nhật Trường
4 Tự động Dẫn xuất Instance: Show, Eq, Ord và hơn thế
5 Biểu diễn Sự Vắng mặt với Maybe
6 Xử lý Lỗi Đơn giản với Either
7 Kỹ thuật và Thực hành Tốt nhất về Khớp Mẫu
1 Kiểu IO và Giá trị Thuần khiết vs Không thuần khiết
2 do-notation và Desugaring
3 Nhập/Xuất Văn bản Đơn giản
4 Xử lý Đầu vào Không hợp lệ với Maybe và Either
5 Tổ chức Mã với Module và Import
6 Tách biệt Logic Thuần khiết khỏi IO
1 Tiền thân và Động lực: Từ ML đến Miranda
2 Rèn giũa một Chuẩn — Ủy ban Haskell và Mục tiêu Thiết kế Ban đầu
3 Haskell 98 — Ổn định một Lõi Tối thiểu
4 Haskell 2010 và Con đường Tiến hóa Từng bước
5 Sự trỗi dậy của GHC — Từ Nguyên mẫu Học thuật đến Trình biên dịch Sản xuất
6 Cộng đồng, Thư viện và Sự hình thành Haskell Hiện đại
1 Tính thuần khiết và Tính minh bạch Tham chiếu
2 Giá trị, Hàm và Tính bất biến
3 Tính lười — Ngữ nghĩa Gọi-khi-cần
4 Thunk, Chi phí Đánh giá và Hành vi Không gian
5 Lý luận Đẳng thức và Biến đổi
6 Khả năng Kết hợp và Trừu tượng Bậc Cao
7 Mã hóa Hiệu ứng: Monad, Applicative và Tính không thuần khiết Có kiểm soát
8 Đánh đổi, Khả năng Dự đoán và Chiến lược Tính nghiêm ngặt
1 Tại sao Kiểu Tĩnh Quan trọng trong Haskell
2 Giải thích Suy luận Kiểu Hindley–Milner
3 Đa hình Tham số vs Type Class
4 Kiểu Dữ liệu Đại số và Khớp Mẫu
5 Kind và Kiểu Bậc Cao
6 GADT và Mô tả Kiểu Phong phú hơn
7 DataKinds, Type Families và Lập trình Cấp Kiểu
8 Mã hóa Bất biến và Xây dựng API An toàn hơn
1 Type Class — Giao diện qua Ví dụ
2 Instance, Tính nhất quán và Quy tắc Chồng lấn
3 Functor — Ánh xạ qua Cấu trúc
4 Applicative — Kết hợp Hiệu ứng một cách Thanh lịch
5 Monad — Chuỗi hóa với bind và Return
6 Monad Transformer và Xếp chồng Hiệu ứng
7 Foldable và Traversable — Gấp và Duyệt qua Hình dạng
8 Type Class Đại số và Mẫu hình Thiết kế (Monoid, Alternative, Semigroup)
1 GHC — Động cơ Trình biên dịch
2 Cabal — Mô hình Gói và Build của Haskell
3 Stack và Build Có thể Tái lập
4 Hackage và Stackage — Kho lưu trữ Hệ sinh thái Haskell
5 Haskell Language Server, GHCi và Phản hồi Nhanh
6 Định dạng, Kiểm tra lỗi và Tài liệu (Ormolu, HLint, Haddock)
7 Kiểm thử trong Haskell — Hspec, QuickCheck và Hedgehog
8 CI, Khả năng Tái lập và Thực hành Phát hành cho Dự án Haskell
1 Thời gian chạy GHC và Luồng Nhẹ
2 Nguyên thủy Đồng thời — MVar, IORef và Kênh
3 Async và Đồng thời Có cấu trúc
4 Đi sâu vào Bộ nhớ Giao dịch Phần mềm (STM)
5 Song song hóa và Chiến lược Đánh giá
6 Tính lười, Tính nghiêm ngặt và Hành vi Không gian-Thời gian
7 Hồ sơ, Cờ RTS và Chẩn đoán Hiệu suất
8 Bộ nhớ, GC và Biểu diễn Dữ liệu Hiệu quả
1 API Web Có kiểu với Servant
2 Framework Web Micro và Full‑Stack — Scotty vs Yesod
3 Trao đổi JSON với Aeson
4 Xây dựng Công cụ Dòng lệnh với optparse‑applicative
5 Mẫu truy cập Cơ sở dữ liệu — Persistent và Hasql
6 Streaming và Luồng Dữ liệu Quy mô lớn với Conduit và Pipes
7 Container hóa và Triển khai Dịch vụ Haskell
8 Khả năng Quan sát, Ghi nhật ký và Giám sát cho Ứng dụng Haskell
1 Haskell trong Tài chính và Hệ thống Rủi ro
2 Trình biên dịch, Công cụ và Công việc Ngôn ngữ với Haskell
3 Blockchain, Hợp đồng Thông minh và Hệ thống Phi tập trung
4 Xác minh, Phương pháp Hình thức và Phần mềm An toàn-Chuyên sâu
5 Tự động hóa Cơ sở hạ tầng và Công cụ Đáng tin cậy
6 Kỹ thuật Dữ liệu, Phân tích và Pipeline Hiệu suất Cao
7 Khả năng Tương tác và Câu chuyện FFI
8 DSL Nhúng và Mô hình hóa Miền với Haskell
9 Mẫu hình Áp dụng, Thực hành Nhóm và Mở rộng Quy mô Haskell
1 Lens và Quang học — Cơ bản về Truy cập Bất biến
2 Thiết kế Quang học và Đánh đổi Hiệu suất
3 Monad Transformer và Cách tiếp cận mtl
4 Hiệu ứng Đại số và Thư viện Hiện đại (Polysemy, fused-effects)
5 Kiểu Tuyến tính — Quyền sở hữu, Tài nguyên và An toàn
6 Kiểu Phụ thuộc và Tiến bộ Cấp Kiểu
7 Mẫu hình Đồng thời An toàn hơn và Song song hóa Nhận thức Hiệu ứng
8 Điều gì Đang Trưởng thành, Điều gì Thử nghiệm và Điều gì Cần Theo dõi
1 Replit
2 Hello World
3 Toán học
4 Module
1 Danh sách
2 Bản ghi & Tuple
1 Hàm
2 Câu lệnh Điều kiện
3 Lấy Đầu vào từ Người dùng
4 Đệ quy

Giới thiệu khóa học

In this course, you will develop a strong, practical foundation in Haskell while also gaining a deep understanding of the theoretical ideas that shaped the language. You’ll begin by learning how to structure minimal, correct Haskell programs: declaring top‑level values, writing local let bindings, organizing code inside the required main = do wrapper, and mastering Haskell’s precise indentation and layout rules—skills that ensure your programs compile and run cleanly.

As you move forward, you’ll work hands‑on with the core elements of the language: numbers, characters, strings, lists, tuples, and user‑defined algebraic data types. Along the way, you’ll learn how Haskell’s sophisticated type system infers types, when explicit type signatures are helpful, and how typeclasses such as Show, Eq, Ord, Num, and Fractional enhance expressiveness and safety in your programs.

A major part of the course focuses on writing elegant and maintainable Haskell. You will practice using pattern matching—on literals, tuples, lists, constructors, and more—along with guards, case expressions, and where clauses to express logic clearly and concisely. You’ll also explore recursion, higher‑order functions (map, filter, foldr, foldl), operator sections, and function composition, gaining the ability to transform data in a functional, declarative style.

As you gain fluency with Haskell’s syntax and patterns, you’ll learn how to manage and reason about effects using IO, do‑notation, and the bind operator. You will see firsthand how Haskell separates pure logic from side‑effecting actions and how optional or fallible computations can be represented safely using Maybe and Either. Through practical examples, you’ll also learn to parse and validate user input safely with tools like readMaybe, building robust error‑handling habits early in your journey.

This course doesn’t stop at practice—you’ll also explore the deeper theory that makes Haskell distinct. You’ll learn how lambda calculus laid the foundations for treating functions as first‑class citizens and shaped key concepts like higher‑order functions and substitution‑based evaluation. You’ll explore the central ideas of purity and referential transparency, understanding why Haskell enforces them, how they enable equational reasoning, and how they empower the compiler to perform advanced optimizations.

You’ll gain historical insight as well, learning how earlier languages like ML and Miranda influenced Haskell’s design, how the Haskell Committee established the language’s guiding principles, and how standards like Haskell 98 and Haskell 2010 stabilized the core language while allowing controlled evolution. You’ll also explore the growth of GHC, from a research compiler to the production‑grade toolchain used today, and see how Haskell’s vibrant community, its package ecosystem, and its tooling (GHCi, Cabal, Stack, linters, formatters) support modern development practices.

By the end of this course, you will be able to:

  • Write complete, well‑structured Haskell programs using main, do‑notation, local bindings, and proper layout

  • Build and work with lists, tuples, ranges, records, and custom algebraic data types

  • Use pattern matching, guards, recursion, and higher‑order functions to express logic elegantly

  • Understand and apply type inference, polymorphism, and typeclasses effectively

  • Handle errors and optional values safely using Maybe, Either, and parsed input handling

  • Use IO and monadic sequencing to interact with the real world while keeping pure logic separate

  • Navigate modules, imports (qualified, selective, and hidden), and design clean APIs

  • Understand the theoretical foundations—lambda calculus, purity, referential transparency—and how they shape real Haskell code

  • Appreciate Haskell’s history, its standards, the evolution of GHC, and the culture and libraries that form the modern ecosystem

By the time you complete the course, you’ll not only be comfortable writing idiomatic Haskell—you’ll understand why Haskell works the way it does. You’ll think more functionally, reason more clearly, and be ready to write expressive, maintainable, and deeply reliable Haskell programs.

Khóa học liên quan

Khám phá thêm các khoá học cùng chủ đề

Hiển thị tất cả khoá học Functional Programming
Hiển thị tất cả khoá học Haskell
Hiển thị tất cả khoá học Programming Languages
Hiển thị tất cả khoá học Software Development
Zalo
Tôi có thể tư vấn khoá học cho bạn 😊