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

    Nguồn: Kipalog


Hãy đăng nhập để trả lời
 

Có vẻ như bạn đã mất kết nối tới LaptrinhX, vui lòng đợi một lúc để chúng tôi thử kết nối lại.