Nếu tôi có loại bản ghi với ống kính, bạn có thể tạo bản ghi mới mà không sử dụng các trình truy cập bản ghi cơ bản không?Có thể xây dựng một kỷ lục mới bằng cách sử dụng Ống kính không?
{-# LANGUAGE TemplateHaskell #-}
import Control.Lens
import Control.Lens.TH
data Foo = Foo { _s :: String
, _b :: Bool
} deriving (Show, Eq)
makeLenses ''Foo
tôi thể làm Foo
một thể hiện của Data.Default
và sau đó modifiy def
với ống kính, nhưng không phải tất cả các loại hồ sơ sẽ có giá trị mặc định hợp lý. Control.Lens có cách riêng để làm điều đó không?
Bạn luôn có thể sử dụng 'Foo {}' làm mặc định, để lại tất cả các trường không xác định. –
Cảm ơn! Tôi thậm chí không biết bạn có thể bỏ qua các lĩnh vực ở đó. Tôi chỉ * giả định * nó sẽ là một lỗi biên dịch. –
Lưu ý rằng thao tác này sẽ không hoạt động nếu 'Foo' có các trường nghiêm ngặt. – shachaf