Re: [Haskell-cafe] GHC RTS question

2010-02-24 Thread Artyom Kazak
2010/2/24 Brandon S. Allbery KF8NH allb...@ece.cmu.edu:
 On Feb 22, 2010, at 03:36 , Roman Cheplyaka wrote:

 * Anthony Cowley acow...@seas.upenn.edu [2010-02-21 14:15:00-0500]

 #! /usr/bin/env bash
 ./prog --RTS $*

  ./prog --RTS $@

 Otherwise it will work wrong if arguments contain quoted field
 separators (e.g. spaces).


  #! /bin/sh
  ./prog --RTS ${1+$@}

 The longer specification above should work with whatever /bin/sh is around,
 whether it's Solaris /sbin/sh, FreeBSD's sh, general Linux bash,
 Debian/Ubuntu dash, etc.


And with Windows, of course :) Haskell is cross-platform, isn't it?
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] GHC RTS question

2010-02-24 Thread Roman Cheplyaka
* Artyom Kazak artyom.ka...@gmail.com [2010-02-24 10:23:07+0200]
 2010/2/24 Brandon S. Allbery KF8NH allb...@ece.cmu.edu:
  On Feb 22, 2010, at 03:36 , Roman Cheplyaka wrote:
 
  * Anthony Cowley acow...@seas.upenn.edu [2010-02-21 14:15:00-0500]
 
  #! /usr/bin/env bash
  ./prog --RTS $*
 
   ./prog --RTS $@
 
  Otherwise it will work wrong if arguments contain quoted field
  separators (e.g. spaces).
 
 
   #! /bin/sh
   ./prog --RTS ${1+$@}
 
  The longer specification above should work with whatever /bin/sh is around,
  whether it's Solaris /sbin/sh, FreeBSD's sh, general Linux bash,
  Debian/Ubuntu dash, etc.
 
 
 And with Windows, of course :) Haskell is cross-platform, isn't it?

Haskell is a language, it does not have any notion of platform.

It has several implementations, which may or may not be cross-platform.
(OP asked specifically about ghc, which supports a number of
platforms, including Windows.)

Here we talk not about ghc itself, but about POSIX shell interpreter,
which is available on every POSIX-compliant operating system.
Windows (out of the box) lacks implementation of POSIX shell.

-- 
Roman I. Cheplyaka :: http://ro-che.info/
Don't let school get in the way of your education. - Mark Twain
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] GHC RTS question

2010-02-23 Thread Brandon S. Allbery KF8NH

On Feb 22, 2010, at 03:36 , Roman Cheplyaka wrote:

* Anthony Cowley acow...@seas.upenn.edu [2010-02-21 14:15:00-0500]

#! /usr/bin/env bash
./prog --RTS $*


 ./prog --RTS $@

Otherwise it will work wrong if arguments contain quoted field
separators (e.g. spaces).



  #! /bin/sh
  ./prog --RTS ${1+$@}

The longer specification above should work with whatever /bin/sh is  
around, whether it's Solaris /sbin/sh, FreeBSD's sh, general Linux  
bash, Debian/Ubuntu dash, etc.


--
brandon s. allbery [solaris,freebsd,perl,pugs,haskell] allb...@kf8nh.com
system administrator [openafs,heimdal,too many hats] allb...@ece.cmu.edu
electrical and computer engineering, carnegie mellon universityKF8NH




PGP.sig
Description: This is a digitally signed message part
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] GHC RTS question

2010-02-22 Thread minh thu
2010/2/22 Ivan Miljenovic ivan.miljeno...@gmail.com:
 On 22 February 2010 10:55, Lennart Augustsson lenn...@augustsson.net wrote:
 Supply a fix for the problem, and it will probably get included.
 There has probably been little demand for this feature so far.

 But it is a little bit weird where if you have an application that you
 release into production (which, admittedly, I've never done), then end
 users are able to fiddle with settings which they shouldnt' really
 touch (though there's not really that much that I can see that they'd
 be able to do wrong with just RTS settings...).

Isn't the same situation with java, or even with any application using
some config files, or with dynamic libraries ?

Cheers,
Thu
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] GHC RTS question

2010-02-22 Thread Roman Cheplyaka
* Anthony Cowley acow...@seas.upenn.edu [2010-02-21 14:15:00-0500]
 On Sun, Feb 21, 2010 at 1:58 PM, Artyom Kazak artyom.ka...@gmail.com wrote:
  So, if I type ./prog +RTS --RTS +RTS, the output will be +RTS. But
  I want the output to be equal to the input IN ALL CASES, without any
  quotes, additional options, etc. I want all the command line to go to
  my program. How can I do it? (The only way I know now - hacking the
  GHC. If there are no other ways, I'll do it.)
 
 How about a wrapper script? Something like,
 
 #! /usr/bin/env bash
 ./prog --RTS $*
 
 Just use that as the front-end to your Haskell program.

If you want Haskell program to get exactly the same arguments that were
passed to the wrapper, use

  ./prog --RTS $@

Otherwise it will work wrong if arguments contain quoted field
separators (e.g. spaces).

-- 
Roman I. Cheplyaka :: http://ro-che.info/
Don't let school get in the way of your education. - Mark Twain
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] GHC RTS question

2010-02-21 Thread Felipe Lessa
On Sun, Feb 21, 2010 at 05:45:22PM +0200, Artyom Kazak wrote:
 Hello everybody!
 I want to write a little program, that will receive a string as command-line
 argument and write it in the file. But if this string contains '+RTS', GHC
 runtime won't pass the rest of the string to my program.
 What can I do to avoid this?

Use -RTS, as in

$ ghc -V
The Glorious Glasgow Haskell Compilation System, version 6.10.4

$ ghc +RTS -V
ghc: no input files
Usage: For basic information, try the `--help' option.

$ ghc +RTS -RTS -V
The Glorious Glasgow Haskell Compilation System, version 6.10.4

--
Felipe.
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] GHC RTS question

2010-02-21 Thread Daniel Fischer
Am Sonntag 21 Februar 2010 16:45:22 schrieb Artyom Kazak:
 Hello everybody!
 I want to write a little program, that will receive a string as
 command-line argument and write it in the file. But if this string
 contains '+RTS', GHC runtime won't pass the rest of the string to my
 program.
 What can I do to avoid this?

Enclose it in double quotes (perhaps single quotes would also work)

$ ./proggy argwith +RTS in harmlessArg otherHarmlessArg
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] GHC RTS question

2010-02-21 Thread Artyom Kazak
 Enclose it in double quotes (perhaps single quotes would also work)
No, I want my program to work the same way as UNIX echo does.
Without any double quotes.
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] GHC RTS question

2010-02-21 Thread Daniel Fischer
Am Sonntag 21 Februar 2010 18:20:43 schrieb Artyom Kazak:
  Enclose it in double quotes (perhaps single quotes would also work)

 No, I want my program to work the same way as UNIX echo does.
 Without any double quotes.

Okay, what about

If you absolutely positively want all the rest of the options in a command 
line to go to the program (and not the RTS), use a ––RTS.

$ ./prog +RTS --RTS +RTS

? (BTW, enclosing in quotes doesn't work anyway if the argument consists 
*only* of +RTS, same as with echo, echo -e doesn't output '-e' either).

___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] GHC RTS question

2010-02-21 Thread Artyom Kazak
2010/2/21 Daniel Fischer daniel.is.fisc...@web.de:
 Am Sonntag 21 Februar 2010 18:20:43 schrieb Artyom Kazak:
  Enclose it in double quotes (perhaps single quotes would also work)

 No, I want my program to work the same way as UNIX echo does.
 Without any double quotes.

 Okay, what about

 If you absolutely positively want all the rest of the options in a command
 line to go to the program (and not the RTS), use a ––RTS.

 $ ./prog +RTS --RTS +RTS

 ? (BTW, enclosing in quotes doesn't work anyway if the argument consists
 *only* of +RTS, same as with echo, echo -e doesn't output '-e' either).



So, if I type ./prog +RTS --RTS +RTS, the output will be +RTS. But
I want the output to be equal to the input IN ALL CASES, without any
quotes, additional options, etc. I want all the command line to go to
my program. How can I do it? (The only way I know now - hacking the
GHC. If there are no other ways, I'll do it.)
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] GHC RTS question

2010-02-21 Thread Max Bolingbroke
On 21 February 2010 18:58, Artyom Kazak artyom.ka...@gmail.com wrote:
 So, if I type ./prog +RTS --RTS +RTS, the output will be +RTS. But
 I want the output to be equal to the input IN ALL CASES, without any
 quotes, additional options, etc. I want all the command line to go to
 my program. How can I do it? (The only way I know now - hacking the
 GHC. If there are no other ways, I'll do it.)

You might be able to get somewhere by writing a custom main function
in C and linking it in. According to
http://haskell.org/ghc/docs/latest/html/users_guide/options-phases.html
if a lib specified with the -l option during compilation contains a
main, that will be used in preference to the one from HSrts.

You could presumably just extend argv with the +RTS --RTS entries
and then call into the one from HSrts, so this might even be quite
easy.

Cheers,
Max
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] GHC RTS question

2010-02-21 Thread Anthony Cowley
On Sun, Feb 21, 2010 at 1:58 PM, Artyom Kazak artyom.ka...@gmail.com wrote:
 So, if I type ./prog +RTS --RTS +RTS, the output will be +RTS. But
 I want the output to be equal to the input IN ALL CASES, without any
 quotes, additional options, etc. I want all the command line to go to
 my program. How can I do it? (The only way I know now - hacking the
 GHC. If there are no other ways, I'll do it.)

How about a wrapper script? Something like,

#! /usr/bin/env bash
./prog --RTS $*

Just use that as the front-end to your Haskell program.

Anthony
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] GHC RTS question

2010-02-21 Thread Daniel Fischer
Am Sonntag 21 Februar 2010 19:58:12 schrieb Artyom Kazak:
 2010/2/21 Daniel Fischer daniel.is.fisc...@web.de:
  Am Sonntag 21 Februar 2010 18:20:43 schrieb Artyom Kazak:
   Enclose it in double quotes (perhaps single quotes would also work)
 
  No, I want my program to work the same way as UNIX echo does.
  Without any double quotes.
 
  Okay, what about
 
  If you absolutely positively want all the rest of the options in a
  command line to go to the program (and not the RTS), use a ––RTS.
 
  $ ./prog +RTS --RTS +RTS
 
  ? (BTW, enclosing in quotes doesn't work anyway if the argument
  consists *only* of +RTS, same as with echo, echo -e doesn't output
  '-e' either).

 So, if I type ./prog +RTS --RTS +RTS, the output will be +RTS. But
 I want the output to be equal to the input IN ALL CASES, without any
 quotes, additional options, etc. I want all the command line to go to
 my program. How can I do it? (The only way I know now - hacking the
 GHC. If there are no other ways, I'll do it.)

Shell wrapper:

$ cat wopTest
./opTest +RTS --RTS $@

$ cat opTest.hs
module Main (main) where

import System.Environment (getArgs)

main = mapM_ print = getArgs

$ ./wopTest +RTS -sstderr -RTS
+RTS
-sstderr
-RTS

Other than that, hacking GHC is the only way I can think of either, since 
looking for RTS-options is a fixed (and generally necessary) part of the 
RTS.

But why do you want that behaviour so much that you'd be willing to hack 
GHC?

___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] GHC RTS question

2010-02-21 Thread Ben Millwood
On Sun, Feb 21, 2010 at 7:10 PM, Max Bolingbroke
batterseapo...@hotmail.com wrote:

 You might be able to get somewhere by writing a custom main function
 in C and linking it in. According to
 http://haskell.org/ghc/docs/latest/html/users_guide/options-phases.html
 if a lib specified with the -l option during compilation contains a
 main, that will be used in preference to the one from HSrts.


I think the neater way of doing this would be to use the FFI, with a
foreign export declaration making your haskell main available to a
wrapper C file, which would then initialise the RTS with a
slightly-modified argc and argv.
See http://www.haskell.org/ghc/docs/latest/html/users_guide/ffi-ghc.html
for details on how to do that.

I also think it's strange, though, that adding RTS hooks is not
optional. GHC should support some method of disabling them, in my
opinion.
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] GHC RTS question

2010-02-21 Thread Lennart Augustsson
Supply a fix for the problem, and it will probably get included.
There has probably been little demand for this feature so far.

  -- Lennart

On Sun, Feb 21, 2010 at 10:21 PM, Ben Millwood hask...@benmachine.co.uk wrote:
 On Sun, Feb 21, 2010 at 7:10 PM, Max Bolingbroke
 batterseapo...@hotmail.com wrote:

 You might be able to get somewhere by writing a custom main function
 in C and linking it in. According to
 http://haskell.org/ghc/docs/latest/html/users_guide/options-phases.html
 if a lib specified with the -l option during compilation contains a
 main, that will be used in preference to the one from HSrts.


 I think the neater way of doing this would be to use the FFI, with a
 foreign export declaration making your haskell main available to a
 wrapper C file, which would then initialise the RTS with a
 slightly-modified argc and argv.
 See http://www.haskell.org/ghc/docs/latest/html/users_guide/ffi-ghc.html
 for details on how to do that.

 I also think it's strange, though, that adding RTS hooks is not
 optional. GHC should support some method of disabling them, in my
 opinion.
 ___
 Haskell-Cafe mailing list
 Haskell-Cafe@haskell.org
 http://www.haskell.org/mailman/listinfo/haskell-cafe

___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] GHC RTS question

2010-02-21 Thread Ivan Miljenovic
On 22 February 2010 10:55, Lennart Augustsson lenn...@augustsson.net wrote:
 Supply a fix for the problem, and it will probably get included.
 There has probably been little demand for this feature so far.

But it is a little bit weird where if you have an application that you
release into production (which, admittedly, I've never done), then end
users are able to fiddle with settings which they shouldnt' really
touch (though there's not really that much that I can see that they'd
be able to do wrong with just RTS settings...).


-- 
Ivan Lazar Miljenovic
ivan.miljeno...@gmail.com
IvanMiljenovic.wordpress.com
Joan Crawford  - I, Joan Crawford, I believe in the dollar.
Everything I earn, I spend. -
http://www.brainyquote.com/quotes/authors/j/joan_crawford.html
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe