Một vài mẹo sử dụng Stack hiệu quả khi lập trình Haskell
TIL
592
Haskell
17
haskell-stack
1
White

viethnguyen viết ngày 11/02/2018

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ụng stack 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

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

viethnguyen

12 bài viết.
29 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
14 4
Giới thiệu về Arduino Có thể bạn đã quen lập trình trên PC, với những ngôn ngữ như C, C++, C, Java, Python, Ruby... Nhưng bạn có biết là phần mềm...
viethnguyen viết 3 năm trước
14 4
White
8 0
Trong bài viết này, tôi sẽ trình bày về một đặc tính của Haskell khá khác biệt so với các ngôn ngữ lập trình khác, đó là laziness (dịch tiếng việt ...
viethnguyen viết hơn 3 năm trước
8 0
White
6 0
Giới thiệu Quy hoạch động là một trong những kĩ thuật lập trình cơ bản được sử dụng khá nhiều trong các cuộc thi lập trình. Ý tưởng về cơ bản rất ...
viethnguyen viết 3 năm trước
6 0
Bài viết liên quan
White
0 2
fCC: Technical Documentation Page note So I have finished the HTML part of this exercise and I want to come here to lament about the lengthy HTML ...
HungHayHo viết 29 ngày trước
0 2
White
19 1
Toán tử XOR có tính chất: + A XOR A = 0 + 0 XOR A = A Với tính chất này, có thể cài đặt bài toán sau với độ phức tạp O(N) về runtime, và với O(1)...
kiennt viết gần 2 năm trước
19 1
{{like_count}}

kipalog

{{ comment_count }}

bình luận

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


White
{{userFollowed ? 'Following' : 'Follow'}}
12 bài viết.
29 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á!