Tôi có một số soạn sẵn Haskell mà trông giống như sau:Haskell động dữ liệu kiểu thay đổi
data Configuration
{ confA :: Integer
, confB :: Boolean
, confC :: String }
x = (\arg opt -> opt{ confA=arg })
y = (\arg opt -> opt{ confB=arg })
z = (\arg opt -> opt{ confC=arg })
và tôi muốn để loại bỏ các soạn sẵn, năng suất một cái gì đó dọc theo dòng:
setter :: (Config -> a) -> a -> Config -> Config
x = setter confA
y = setter confB
z = setter confC
Nhưng tôi không có ý tưởng làm thế nào để xây dựng một chức năng setter
như vậy. Điều này thậm chí có thể trong (không mẫu) haskell hoặc tôi butting lên chống lại cú pháp đường ở đây? Nếu vậy, làm thế nào tôi sẽ làm một điều như vậy trong mẫu haskell?
Tôi tin điều này là chính xác. Cú pháp ghi tự động tạo * getters * cho bạn, nhưng chúng hầu như vô dụng khi bạn muốn tạo * setters *. –