Multiline shebang: Difference between revisions
Content added Content deleted
m (be tolerant of changes in current locale) |
(Added two Haskell examples.) |
||
Line 196: | Line 196: | ||
} |
} |
||
</lang> |
</lang> |
||
=={{header|Haskell}}== |
|||
{{trans|C}} |
|||
<lang Haskell>#!/bin/bash |
|||
sed -n -e '7,$p' < "$0" > $0.$$.hs |
|||
ghc $0.$$.hs > /dev/null |
|||
./$0.$$ "$0" "$@" |
|||
rm $0.$$* |
|||
exit |
|||
import Text.Printf |
|||
import System.Environment |
|||
main :: IO () |
|||
main = getArgs >>= mapM_ (uncurry $ printf "argv[%d] -> %s\n") . zip ([0..] :: [Int])</lang> |
|||
{{out}} |
|||
<pre>$ ./multibang.hs |
|||
argv[0] -> ./multibang.hs |
|||
$ ./multibang.hs Goodbye, World! |
|||
argv[0] -> ./multibang.hs |
|||
argv[1] -> Goodbye, |
|||
argv[2] -> World!</pre> |
|||
Or you can 'cheat' by ignoring Bash's complaints about Haskell comments (gives the exact same output as above): |
|||
<lang Haskell>#!/bin/bash |
|||
{- 2> /dev/null |
|||
exec runghc $0 $0 $@ |
|||
-} |
|||
import Text.Printf |
|||
import System.Environment |
|||
main :: IO () |
|||
main = getArgs >>= mapM_ (uncurry $ printf "argv[%d] -> %s\n") . zip ([0..] :: [Int])</lang> |
|||
=={{header|J}}== |
=={{header|J}}== |