Module in Haskell
TIL
763
@100daysTIL
72
Haskell
18
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

119 bài viết.
2030 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
182 46
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 5 năm trước
182 46
White
157 39
(Ả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 4 năm trước
157 39
White
118 19
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 hơn 4 năm trước
118 19
Bài viết liên quan
White
16 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 5 năm trước
16 6
White
3 1
Javascript inititalValue trong reduce() có quan trọng không? Day 41: Đọc code mẫu về hàm reduce() trong (Link), thấy hàm reduce() khá "đơn giản"....
Minh-Trung Nguyễn viết hơn 2 năm trước
3 1
{{like_count}}

kipalog

{{ comment_count }}

bình luận

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


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