Module in Haskell
TIL
499
@100daysTIL
43
Haskell
13
White

Huy Trần viết ngày 12/02/2018

#Day010

Module là cách để gom các chức năng liên quan với nhau thành một gói, để có thể dùng lại trong cùng một project hoặc nhiều project khác nhau.

Khai báo và Export

Để khai báo Module, chúng ta dùng cú pháp:

module <Tên Module> where
--  Ví dụ
module Bar where

Tên Module phải bắt đầu bằng một ký tự viết hoa, và nằm trong file tương ứng (ví dụ Bar.hs), mỗi file chỉ chứa một module duy nhất. Trong trường hợp chúng ta có submodules thì phải đưa vào trong một folder, ví dụ:

-- File: Foo/Bar.hs
module Foo.Bar where

Giả sử chúng ta không muốn export toàn bộ mọi function có trong một module mà chỉ muốn export ra một phần, chúng ta có thể viết như sau:

module Bar (func_a, func_b) where

func_a = ...

func_b = ...

func_c = ...

Import

Để import một module, chúng ta viết:

-- import mọi thứ
import Bar
import Foo.Bar

-- import một vài function
import Bar (func_b)

-- import và giấu đi một vài function
import Foo hiding (func_a)

-- import xong đổi tên module
import Foo as F
import Bar as B

Nếu chúng ta có hai function cùng tên nằm trong hai module khác nhau, khi sử dụng Haskell sẽ không biết cần phải sử dụng function nào, trong trường hợp này chúng ta dùng từ khóa qualified:

-- Giả sử cả 2 module đều có hàm (func_a)
import qualified Foo (func_a)
import qualifid Bar (func_b)

-- Cách dùng
Foo.func_a -- gọi func_a của Foo
Bar.func_a -- gọi func_a của Bar
func_a -- viết như này thì lỗi

huytd 13-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

Huy Trần

102 bài viết.
1440 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
146 43
Tại sao phải viết blog kĩ thuật? Có rất nhiều bài viết trên mạng nói về vấn đề tại sao một lập trình viên nên thường xuyên viết các bài blog kĩ thu...
Huy Trần viết hơn 2 năm trước
146 43
White
143 37
(Ảnh) Tiếp tục sêri (Link) lần này, chúng ta sẽ cùng tìm hiểu và mô phỏng lại một chức năng mà mọi người đang bắt đầu sử dụng hằng ngày, đó là chứ...
Huy Trần viết hơn 1 năm trước
143 37
White
97 16
Phần 1: Tự truyện Tui và Toán đã từng là hai kẻ thù không đội trời chung trong suốt hơn mười lăm năm ròng rã. Ngay từ ánh nhìn đầu tiên đã ghét nh...
Huy Trần viết gần 2 năm trước
97 16
Bài viết liên quan
White
2 0
D3.js Biểu diễn dữ liệu dạng tree bằng việc trải nó ra trên bản đồ Series Today I Learn trong vòng 100 ngày thử thách bản thân ngày 15. Mỗi ngày 1...
ngminhtrung viết 16 ngày trước
2 0
White
13 6
Người ta nói "nullable values" là cái "billion dollar mistake". Kể từ ALGOL, chúng ta không thể dùng nullable values/references như một value bình ...
Justin Le viết hơn 2 năm trước
13 6
{{like_count}}

kipalog

{{ comment_count }}

bình luận

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


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