title: How to make Sequence evaluate?
body: <p>I'm working on my knowledge of F# and one problem I run in to repeatedly is when trying to create functions, if I use <code>Sequence</code> too close to the end result I end up printing the signature of the function instead of the output.</p>
  
  <p>Example:</p>
  
  <pre><code>[&lt;EntryPoint&gt;]
  let main argv = 
      let consoleInput = Seq.initInfinite (fun _ -&gt; System.Console.ReadLine())
  
      let isEmpty str = (not (str = System.Environment.NewLine)) &amp;&amp; (not (str = "")) &amp;&amp; (not (str = null))
  
      let inputs = consoleInput |&gt; 
          Seq.takeWhile isEmpty |&gt; 
          Seq.map (fun str -&gt; System.Convert.ToInt32(str))
  
      let makeAbsolute lst = Seq.map (fun x -&gt; abs x)
  
      let values = makeAbsolute inputs
  
      printfn "%A" values
  
      0 // return an integer exit code
  </code></pre>
  
  <p>All this is supposed to do is take in N inputs and output them as absolute values. However at the end it prints out the function signature - .</p>
  
  <p>I don't want to call Seq.toList just to evaluate the sequence because it seems inelegant, so is there a 'right way' to be doing this kind of thing?</p>
  
  <p>Edit: Besides my rather cheeky use of 'inelegance', I also want to keep the function as generic as possible (just a habit born of resharper use and my style of development), and using tolist is making the function 'more specific' which I want to avoid.</p>