2013-08-22 31 views
10

Mẫu kết hợp mẫu này được gọi là: Option{..} <- ..., ví dụ: vì nó được sử dụng ở đây:đối sánh mẫu của biểu mẫu: Tùy chọn {..} <-

data Option = Option { cabal :: Maybe String , noStylish :: Bool } 
... 
main = do 
    Option{..} <- cmdArgs defOption 
    cabp <- case cabal of 
    Nothing -> do 
    ... 

Có vẻ như xác định lại cabalnostylish. Trước khi kết hợp mẫu cabal có loại Option -> Maybe String nhưng sau khi có loại Maybe String.

Ví dụ này đến từ gói được tải lên gần đây cabal2ghci.

Trả lời

18

Đây là phần mở rộng cú pháp GHC được gọi là record wildcards. Trích dẫn tài liệu:

cú pháp Ghi ký tự đại diện cho phép một ".." trong một mô hình kỷ lục, trong đó mỗi lĩnh vực elided f được thay thế bằng mô hình f = f.

Vì vậy, mã này tương đương với

Option { cabal = cabal, noStylish = noStylish } <- cmdArgs defOption 

ràng buộc một cách hiệu quả tên x với giá trị của lĩnh vực ghi lại tên x cho mọi lĩnh vực trong các loại kỷ lục.

<- phần là không thích hợp ở đây, bạn cũng có thể viết

let Option { .. } = some expression 
Các vấn đề liên quan