Skip to main content

GIỚI THIỆU

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

Chúng tôi đang dịch thuyết minh bài giảng sang tiếng Việt

Dưới đây là những điều bạn cần biết về khóa học này.

Khóa học này được thiết kế để dạy cho những người muốn tìm hiểu Haskell từ con số 0 đến mọi thứ cần thiết để làm việc với Marlowe và Plutus. Tuy nhiên, khóa học không có nội dung dành riêng cho Marlowe hoặc Plutus.Nhưng nếu bạn muốn học Haskell để có thể sử dụng Marlowe và Plutus tốt hơn thì đây chính là khóa học dành cho bạn.

A. MỤC LỤC bài giảng
1. Giới thiệu khóa học và công cụ
  • Giới thiệu khóa học và bài giảng
    • Những gì chúng ta sẽ học
    • Cấu trúc kho lưu trữ
  • Giới thiệu về Haskell
    • Cách mở và sử dụng JupyterLab
    • Ngôn ngữ lập trình Hàm thuần túy
    • Cú pháp cơ bản
    • Hệ thống Kiểu Haskell
    • Laziness (Lười biếng là gì?)
    • GHC (và GHCi)
  • GitPod
    • Cách mở và sử dụng GitPod
    • Ví dụ về cách hoàn thành bài tập về nhà.
2. Kiểu dữ liệu, Khai báo và Kiểu Đa hình
  • Giới thiệu ứng dụng thực tế của kiểu
  • Khai báo Kiểu
    • Khai báo (Signatures) của Hàm
    • Biến trong Haskell
      • Các tham số trong hàm
      • Tên/Định nghĩa
  • Hàm trung tố và tiền tố
  • Kiểu dữ liệu (Data types) chuyên sâu
    • Int, Integer
    • Float, Double
    • Rational
    • Bool
    • Char
    • Lists
    • Strings
    • Tuples + Tuples VS Lists
  • Giá trị đa hình (Polymorphism) và biến kiểu
3. Cấu trúc Điều kiện
  • If-then-else
  • Guards
  • Biểu thức let
  • where
  • Nên sử dụng let hay where?
  • Những điều cần lưu ý
4. Khớp mẫu và Case
  • Khớp mẫu (pattern matching) là gì
  • Khớp mẫu đang bật
    • Triển khai Hàm
    • Danh sách (Lists)
    • Bộ dữ liệu (Tuples)
  • Case
5. Cải tiến và kết hợp các Hàm
  • Các hàm bậc cao
    • Hàm filter
    • Hàm any
  • Hàm Lambda ()
  • Ưu tiên và tính kết hợp
  • Hàm Curried
    • Áp dụng một phần
  • Soạn thảo và áp dụng các Hàm
    • Toán tử $
    • Toán tử .
  • Point-free style
6. Đệ quy
  • Tại sao lại cần Đệ quy (Recursion)?
  • Tư duy Đệ quy
    • sum Và product
  • Các bước để tạo hàm Đệ quy của riêng bạn
  • Ví dụ về Đệ quy
    • andlengthreversedroptakemapfilter
  • Trích xuất foldr mẫu
  • Hàm foldl
  • Hàm foldl'
  • Khi nào thì sử dụng foldr, foldl, và foldl'
  • Sự tuyệt vời của Type Classes (lớp của kiểu)
  • Type Classes là gì?
  • Các Type Classes phổ biến
    • EqOrd
    • NumIntegralFloating
    • ReadShow
  • Kiểu hợp lệ chung nhất
  • Nhiều ràng buộc
  • Kiểu đồng nghĩa
    • Cách Định nghĩa Kiểu đồng nghĩa
    • Tại sao sử dụng Kiểu đồng nghĩa
  • Định nghĩa kiểu mới
    • Tạo kiểu mới với data
    • Sử dụng kiểu mới
    • Tham số giá trị
  • Cú pháp bản ghi
  • Kiểu tham số
    • Tham số hóa kiểu đồng nghĩa (Type synonyms)
    • Tham số hóa kiểu data 
  • Kiểu dữ liệu Đệ quy
    • Ví dụ với Tweet
    • Ví dụ với Sequence của Node
    • Ví dụ với Tree của Node
  • Kinds (Loại)
  • Từ khóa newType
10. Tạo Type Classes và các trường hợp
  • Overloading
  • Các bước để tạo Type Classes và các trường hợp
  • Lớp kiểu Eq
    • Định nghĩa Lớp Kiểu (Type Class)
    • Định nghĩa đa trường hợp
    • Hoàn thiện Lớp Kiểu Eq với Đệ quy (và Định nghĩa đầy đủ tối thiểu)
    • Định nghĩa một trường hợp cho một Kiểu tham số.
  • Lớp kiểu WeAccept
  • Lớp kiểu Container
  • Khám phá Lớp Kiểu Ord (Lớp phụ con)
  • Deriving
    • Deriving có thể sai
11. IO cơ bản
  • Hàm thuần túy
  • Giới thiệu về các hành động IO (IO actions)
  • Hiểu về IO actions
  • IO actions trong thực tế
    • Kiểu ()
  • Tương tác với người dùng
    • getChar, getLine, và putStrLn
  • Hành động là giá trị hàng đầu
  • Chuỗi các hành động IO ( toán tử >> và toán tử >>=)
  • Khối do
    • Sử dụng let, lồng do-blocks, thoát IO và return
  • main
  • Khái niệm và tóm tắt cú pháp
12. Ứng dụng, Modules, and Cabal
  • Giới thiệu
  • Ứng dụng/tiện ích mở rộng
  • Tổng quan về các mô-đun cơ sở
  • Nhập mô-đun cơ sở
  • Một vài mô-đun
    • Data.Char
    • Data.Tuple
    • Data.Array
  • Tạo các mô-đun của riêng chúng ta
  • Cabal
    • Nó là gì và tại sao chúng ta sử dụng nó
    • Tập tin cabal
    • Sử dụng các thư viện bên ngoài cùng với Cabal
13. Bit và byte
  • Nhóm bit và byte
  • Haskell và byte
  • Chuỗi byte lười biếng và nghiêm ngặt
  • Ví dụ
14. Xử lý lỗi
  • TODO
15. Tự tìm hiểu thêm và Map
  • Sử dụng GHCi để tìm hiểu thêm
  • Hoogle
  • HaskellWiki
  • Tìm hiểu nhanh mô-đun Map
B. Hướng dẫn để làm bài tập về nhà
  1. Sao chép kho lưu trữ này.
  2. Tạo một  tài khoản GitPod .
  3. Nhấp vào nút này để tạo môi trường phát triển từ xa: Visual Studio Code
  4. Chọn Homework/HomeworkXX thư mục có bài tập về nhà mà bạn muốn hoàn thành.
  5. Thực hiện theo các hướng dẫn bên trong  tệp Homework.hs hoặc Main.hs .
  6. Kiểm tra các giải pháp trong solutions branch!
D.Tài liệu tóm tắt