我知道部分更新的像記錄:任何不錯的記錄在Haskell中處理技巧?
data A a b = A { a :: a, b :: b }
x = A { a=1,b=2 :: Int }
y = x { b = toRational (a x) + 4.5 }
是否有這樣做只是部分初始化,創建一個子記錄類型,或做(反)序列的子記錄什麼花樣?
特別是,我發現,這些第一線的工作,但第二個沒有:
read "A {a=1,b=()}" :: A Int()
read "A {a=1}" :: A Int()
你可以使用正則表達式經常按摩這樣的輸入,但我很好奇什麼哈斯克爾樣的選擇存在。
我不太清楚你在這裏要求什麼。一個可以解析'A {a = 1}'的通用反序列化機制?我不建議實際存儲Haskell'Show'格式的任何數據;它不會是緊湊的,並且在Haskell以外的任何地方解析它將是一件痛苦的事情。 – ehird