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