Given:
data MyRecord a = MyRecord{list :: [a], other_fields :: Char, …}
I am trying to write a function which puts a new a
on list and returns a new MyRecord
:
pushOntoList :: a -> MyRecord -> MyRecord
Question:
Is there a way to write pushOntoList
is such a way that it does not depend on what is in the rest of the record, but simply gives it back unmodified?
Another way to ask this is can you write pushOntoList
without seeing the rest of the MyRecord
definition?
Yes, very easily using the record accessor/label syntax:
b = a { list = 'x' : list a }
as in the function:
pushOntoList c a = a { list = c : list a }
e.g.
data MyRecord a = MyRecord {list :: [a], other_fields :: Char}
deriving Show
main = do
let a = MyRecord [] 'x'
b = a { list = 'x' : list a }
return (a,b)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With