title: Initializing algebraic data type from list
body: <p>I'm a fairly new Haskell programmer and I'm trying to figure out how to get some values into an algebraic data type.</p>
  
  <p>I have a record data type:</p>
  
  <pre><code>data OrbitElements = OrbitElements { epoch :: Double,
                                       ecc :: Double,
                                       distPeri :: Double,
                                       incl :: Double,
                                       longAscNode :: Double,
                                       argPeri :: Double,
                                       timePeri :: Double,
                                       meanMotion :: Double,
                                       meanAnomaly :: Double,
                                       trueAnomaly :: Double,
                                       semiMajorAxis :: Double,
                                       distApo :: Double,
                                       period :: Double
                                     }
  </code></pre>
  
  <p>I'm pulling in some info from a text file, which ends up in a list of Doubles.  Is there an easy way to initialize this data type with the list?  I could just call each setter individually but that seems terribly inefficient when I already have all the values in a list.</p>
  
  <pre><code>let d = [2456382.5,6.786842103348031e-3,0.7184187640759256,3.394660181513041,76.64395338801751,55.2296201483587,2456457.141012543,1.602144936476915,240.4142797010899,239.7408018186761,0.7233278761603762,0.7282369882448266,224.6987721295883]
  let o = OrbitElements
  let epoch o = d !! 0
  let ecc o = d !! 1
  -- and so on
  </code></pre>
  
  <p>What am I missing?</p>