Bạn có chắc chắn muốn xóa bài viết này không ?
Bạn có chắc chắn muốn xóa bình luận này không ?
Một vài mẹo sử dụng Stack hiệu quả khi lập trình Haskell
Hacker News vừa có một bài viết khá hay của Alexis King nói về kinh nghiệm của anh ta khi lập trình Haskell. Bài viết cho rất nhiều tips hay, ở đây xin note lại một số lưu ý khi sử dụng stack
, build tool của Haskell.
Đây là những thứ phải nhớ về Stack:
-
stack
không phải là package manager, nó chỉ thuần tuý là build tool.stack
không quản lý một danh sách các package đã cài nào cả, nó chỉ đơn giản build ra target và các dependencies của nó. - Câu lệnh để build target là
stack build <target>
. Với một project, chỉ cần sử dụngstack build
để build target của project này. - ĐIều này là quan trọng nhất: Chúng ta gần như không cần phải sử dụng
stack install
!
ĐIều mà stack install
làm chỉ đơn giản là stack build --copy-bins
, nghĩa là sau khi build target xong nó chỉ copy tất cả các file chạy vào một vị trí toàn cục (global location) trên máy, mặc định là ~/.local/bin
. Hầu như chúng ta sẽ không bao giờ cần như vậy cả!
Chỉ cần stack build
là đủ. Một vài cách sử dụng stack build
hiệu quả:
-
Để tăng tốc build, nên disable GHC optimization và chạy song song quá trình build dependencies.
$ stack build -j 8 --fast
Build và chạy các tests:
$ stack build -j 8 --fast --test
$ stack test -j 8 --fast
stack
có ảnh hưởng đến việc sử dụng một số tool hỗ trợ lập trình Haskell cho các IDE (ví dụ intero
, ghc-mod
). Thông thường hướng dẫn sử dụng của các tool này nói là nên sử dung stack íntall
để cài đặt chúng lên máy, nhưng một lần nữa Alexis nhấn mạnh là thay vì thế nên sử dụng stack build
. Những tool như thế này hoạt động tốt nhất khi chúng được sử dụng trong sandbox của mỗi project, vì điều này đảm bảo rằng tool sẽ phù hợp với phiên bản GHC sử dụng trong project.
Một điểm bất lợi khi sử dụng cách tiếp cận này là với mỗi project mới, ta lại phải stack build
để có một phiên bản local mới của intero
, ghc-mod
,...
viethnguyen 11-02-2018




