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

109 bài viết.
1595 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
155 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 3 năm trước
155 46
White
149 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 2 năm trước
149 39
White
104 17
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 2 năm trước
104 17
Bài viết liên quan
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 3 năm trước
13 6
White
3 0
Đọc hiểu được type signature là một trong các yếu tố quyết định chuyện bạn có học Haskell được hay không. Đa số chúng ta khi mới tìm hiểu thường g...
Huy Trần viết 5 tháng trước
3 0
{{like_count}}

kipalog

{{ comment_count }}

bình luận

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


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