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 ?
Module in Haskell
#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






