Ứng Dụng Hàm Tinh Khiết Trong Thiết Kế Trình Biên Dịch Nhỏ Nhất Thế Giới

Trình biên dịch the-super-tiny-compiler là một minh chứng sống động cho sức mạnh của lập trình hàm trong các hệ thống thực tế — đặc biệt là vai trò then chốt của hàm tinh khiết (pure function) trong từng giai đoạn xử lý: phân tích từ vựng, xây dựng cây cú pháp trừu tượng (AST), và sinh mã. Dự án chỉ gồm khoảng 200 dòng mã JavaScript nhưng đầy ...

Đăng vào ngày 24 tháng 6 lúc 01:07

Hướng dẫn toàn diện về các phương thức mảng trong ES6

Tổng quan về các phương thức mảng trong ECMAScript 6 ECMAScript 6 (ES6) đã mang đến những cải tiến đột phá cho cách xử lý mảng trong JavaScript, giúp lập trình viên làm việc với tập hợp dữ liệu hiệu quả hơn bao giờ hết. Bài viết này sẽ phân tích chi tiết các tính năng mới quan trọng nhất của mảng trong ES6. Sự chuyển đổi từ lập trình mệnh lện ...

Đăng vào ngày 21 tháng 6 lúc 20:18

Tạo và Sử Dụng Lens và Isos trong Haskell

Thiết kế Lens và Isos tùy chỉnh -- Một số ví dụ trong chương này yêu cầu các tiện ích mở rộng GHC: -- TemplateHaskell cần cho makeLenses; RankNTypes cần cho -- một số chữ ký kiểu sau này. {-# LANGUAGE TemplateHaskell, RankNTypes #-} import Control.Lens import Control.Monad.State data ViTri = ViTri { _toaDoX :: Double , _toaDoY :: Dou ...

Đăng vào ngày 19 tháng 6 lúc 16:52

Khám phá MonadWriter và WriterT trong Haskell

Lớp kiểu MonadWriter Trong Haskell, MonadWriter là một lớp kiểu (type class) cung cấp giao diện chung cho các Monad có khả năng ghi lại dữ liệu phụ (thường dùng cho logging hoặc audit trail). Lớp này yêu cầu kiểu dữ liệu ghi lại phải là một Monoid để có thể kết hợp các giá trị日志. class (Monoid w, Monad m) => MonadWriter w m | m -> w whe ...

Đăng vào ngày 11 tháng 6 lúc 23:25

Tìm hiểu Thư viện Parsec trong Haskell - Phần 2

Các Combinator Cơ bản 1 Prelude Text.Parsec Text.Parsec.String> parseTest (count 3 (char 'a')) "aaa" "aaa" Prelude Text.Parsec Text.Parsec.String> parseTest (between (char '(') (char ')') anyChar) "(3)" '3' Prelude Text.Parsec Text.Parsec.String> parseTest (option ' ' (char 'a')) "b" ' ' Prelude ...

Đăng vào ngày 7 tháng 6 lúc 22:27

Khám phá hệ sinh thái TypeScript đa năng thi.ng/umbrella cho phát triển hàm và xử lý dữ liệu

thi.ng/umbrella là một kho mã nguồn tập trung (monorepo) được viết hoàn toàn bằng TypeScript, bao gồm hơn 180 thư viện độc lập và gần 150 ví dụ minh họa thực tế. Hệ sinh thái này hướng đến các bài toán phát triển phần mềm mang tính khái quát cao — đặc biệt phù hợp với phong cách lập trình hàm, xử lý luồng dữ liệu, và xây dựng hệ thống trực quan ...

Đăng vào ngày 2 tháng 6 lúc 19:46

Các Phương Thức Mảng Trong ES6

ES6 đã giới thiệu 4 phương thức mới để thao tác với mảng: 1.map - Ánh xạ (một đối ứng một) 2.reduce - Tổng hợp (nhiều thành một) 3.filter - Lọc 4.forEach - Lặp/Duyệt. 1. Map Để hiểu nhanh hơn, chúng ta hãy xem xét ví dụ mã: let soNguyen = [3, 5, 7, 9]; let ketQua = soNguyen.map(giaTri => giaTri * giaTri); console.log(ketQua); Kết quả trả về ...

Đăng vào ngày 1 tháng 6 lúc 21:49

Hiểu sâu về Free Monad trong Haskell qua ví dụ thực tế

Giới thiệu về Free Monad Free Monad là một cấu trúc dữ liệu đệ quy cho phép tách biệt hoàn toàn việc mô tả các thao tác (description) khỏi cách thức thực thi chúng (interpretation). Điều này cực kỳ hữu ích khi xây dựng các Domain Specific Languages (DSL) hoặc các hệ thống cần kiểm soát luồng thực thi chặt chẽ. Để bắt đầu, bạn cần thêm thư viện ...

Đăng vào ngày 29 tháng 5 lúc 07:33

Hàm bậc cao trong JavaScript

Phương thức map Xét ví dụ sau: chúng ta có hàm f(x) = x2 và muốn áp dụng hàm này lên mảng [1, 2, 3, 4, 5, 6, 7, 8, 9]. Phương thức map trong JavaScript sẽ giúp thực hiện điều này: 'use strict'; function square(x) { return x * x; } const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]; const results = numbers.map(square); // [1, 4, 9, 16, 25, 3 ...

Đăng vào ngày 16 tháng 5 lúc 06:19