Thư viện mach7 hỗ trợ pattern matching cho C++
C++
30
White

cpplover viết ngày 25/05/2015

Nếu như hôm trước Stroustrup chỉ lộ ý định là sẽ cân nhắc đưa tính năng pattern matching vào C++17, thì hôm qua một bộ thư viện lập trình hỗ trợ pattern matching cho C++ đã được lan truyền trên cộng đồng mạng như 1 proof-of-concept.

Mã nguồn bộ thư viện có thể được tham khảo tại https://github.com/solodon4/Mach7.

Nói qua về pattern matching: đây là một tính năng của ngôn ngữ lập trình và có ở các ngôn ngữ lập trình hiện đại như Rust, Clojure, Scala... Về định nghĩa, pattern matching là tính năng cung cấp ngữ pháp và thủ tục hiệu quả để kiểm tra cấu trúc dữ liệu đồng thời cho phép phân tích kiểu dữ liệu đó thành các thành phần con.

http://bit.ly/AcceptNoVisitors

Mach7 cung cấp 1 interface khá đẹp hỗ trợ pattern matching trong C++. Cách dùng thư viện có thể được tham khảo trong thư mục https://github.com/solodon4/Mach7/tree/master/code/patterns của mã nguồn.

Trong bài báo viết về mach7, tác giả đưa ra các ví dụ use-case và so sánh về performance của mach7. Kết quả có thể được tham khảo chi tiết hơn ở paper trên hay như hình dưới đây (mình copy về).

alt text

Cá nhân mình thấy đây là tính năng rất thú vị và mình muốn nó sẽ có trong C++17.
C++ chắc chắn sẽ là ngôn ngữ hoàn toàn khác với tính năng này.

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

cpplover

12 bài viết.
47 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
17 5
C++ 11 có chức năng lambda. Vì là ngôn ngữ "static type" nên C++ lambda function nhìn khó hơn lambda trong các ngôn ngữ dynamic type khác nhưng pyt...
cpplover viết 3 năm trước
17 5
White
16 2
Giới thiệu Cách duy nhất để học C++ trong 21 ngày là dành hơn 14611 ngày để nghiên cứu và thay thế chính bạn ở ngày số 21 (Ảnh) C++ là một ngôn ...
cpplover viết hơn 3 năm trước
16 2
White
16 0
Lang thang hacker news tìm được một phần nhỏ (Link) của một bác ở Anh tổng hợp về stack mà google đã tạo và sử dụng. Chi tiết về các stack được tổ...
cpplover viết hơn 3 năm trước
16 0
Bài viết liên quan
Male avatar
0 0
Constructor của lớp cha luôn được gọi trước constructor của lớp con. class Foo { public: Foo() { cout << "Base class initializing" << endl; ...
baoquocphan viết hơn 1 năm trước
0 0
White
11 1
Chức năng pattern matching trong C++ thấy nói sẽ kill (Link). Cách viết C++ do vậy sẽ thay đổi tương đối. Tự nhiên tôi thấy phải nhìn lại visitor ...
cpplover viết hơn 3 năm trước
11 1
White
18 0
Nhân tiện vừa đọc bài viết liên quan tới OpenCV trên Kipalog, nên em xin giới thiệu về giải thuật sinh ảnh mosaic từ một ảnh gốc. Không hiểu sinh ả...
Cùi Bắp viết hơn 2 năm trước
18 0
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
12 bài viết.
47 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!