title: Haskell parallel program launch arguments
body: <p>I have programmed a Haskell program which works in a Unix utility manner - you launch the program, it gets the job done, and exits.
  I used concurrency in that program, but for it to be really concurrent, one has to compile it respectively, and furthermore, what surprises me, launch compiled program with some additional arguments.
  I compiled it with:</p>
  
  <p><code>ghc -O2 -threaded --make Main.hs -o Main.parallel</code></p>
  
  <p>And it seems to work in parallel when I run it like that:</p>
  
  <p><code>./Main.parallel ds_houses/task.txt 8 500000 1:+1 +RTS -N8
  ./Main.parallel ds_houses/task.txt 8 500000 +RTS -N8
  ./Main.parallel ds_houses/task.txt 8 +RTS -N8
  ./Main.parallel ds_houses/task.txt +RTS -N8</code></p>
  
  <p>I use arguments <code>8</code>, <code>500000</code> and <code>1:+1</code> because I saw them <a href="https://wiki.haskell.org/Concurrency_demos/Zeta" rel="nofollow noreferrer">here</a>, in the shell script.</p>
  
  <p>I understand the first argument as cores of CPU, but what are others? It doesn't seem that those arguments are used by <code>/usr/bin/time</code> program, because if you add <code>%C</code> to its format, these arguments are shown as arguments for benchmarked program.</p>
  
  <p>Can someone explain or point me to what these arguments do?
  Is my assumption true, that one's Haskell compiled program accepts not only arguments expected by programmer, but also other arguments that are forwarded to Haskell runtime?</p>