Modulinos: Difference between revisions
Content added Content deleted
No edit summary |
|||
Line 1,344: | Line 1,344: | ||
print("Life means %s." % meaning_of_life()) |
print("Life means %s." % meaning_of_life()) |
||
print("Death means invisible scary skeletons.")</lang> |
print("Death means invisible scary skeletons.")</lang> |
||
=={{header|Scala}}== |
|||
Note: Either the current directory (.) must be in the CLASSPATH environment variable, or the CLASSPATH should not be set. |
|||
~/.profile: |
|||
<lang sh># Scala |
|||
export CLASSPATH=$CLASSPATH:.</lang> |
|||
or |
|||
~/.profile: |
|||
(empty) |
|||
Example: |
|||
<lang sh>$ scala ScriptedMain.scala |
|||
Main: The meaning of life is 42 |
|||
$ scalac ScriptedMain.scala Test.scala |
|||
$ scala Test |
|||
Test: The meaning of life is 42</lang> |
|||
ScriptedMain.scala: |
|||
Note the omission of shebangs. scalac refuses to compile code with shebangs. |
|||
<lang scala>object ScriptedMain { |
|||
val meaningOfLife = 42 |
|||
def main(args: Array[String]) { |
|||
println("Main: The meaning of life is " + meaningOfLife) |
|||
} |
|||
}</lang> |
|||
Test.scala: |
|||
<lang scala>object Test { |
|||
def main(args: Array[String]) { |
|||
println("Test: The meaning of life is " + ScriptedMain.meaningOfLife) |
|||
} |
|||
}</lang> |
|||
=={{header|Smalltalk}}== |
|||
Note that the ScriptedMain package must be installed in order for test.st to access code from scriptedmain.st. |
|||
Example |
|||
<lang shell>$ gst-package -t ~/.st package.xml &>/dev/null |
|||
$ ./scriptedmain.st |
|||
Main: The meaning of life is 42 |
|||
$ ./test.st |
|||
Test: The meaning of life is 42</lang> |
|||
package.xml |
|||
<lang xml><packages> |
|||
<package> |
|||
<name>ScriptedMain</name> |
|||
<filein>scriptedmain.st</filein> |
|||
<file>scriptedmain.st</file> |
|||
</package> |
|||
</packages></lang> |
|||
scriptedmain.st |
|||
<lang smalltalk>"exec" "gst" "-f" "$0" "$0" "$@" |
|||
"exit" |
|||
Object subclass: ScriptedMain [ |
|||
ScriptedMain class >> meaningOfLife [ ^42 ] |
|||
] |
|||
| main | |
|||
main := [ |
|||
Transcript show: 'Main: The meaning of life is ', ((ScriptedMain meaningOfLife) printString); cr. |
|||
]. |
|||
(((Smalltalk getArgc) > 0) and: [ ((Smalltalk getArgv: 1) endsWith: 'scriptedmain.st') ]) ifTrue: [ |
|||
main value. |
|||
].</lang> |
|||
test.st |
|||
<lang smalltalk>"exec" "gst" "-f" "$0" "$0" "$@" |
|||
"exit" |
|||
" |
|||
PackageLoader fileInPackage: 'ScriptedMain'. |
|||
Transcript show: 'Test: The meaning of life is ', ((ScriptedMain meaningOfLife) printString); cr.</lang> |
|||
=={{header|R}}== |
=={{header|R}}== |
||
A way to check if code is running at "top level" is to check <code>length(sys.frames())</code>. This value will be zero for a file being run with <code>Rscript</code>, the <code>--file=</code> argument, or at the command line, and will be greater than 0 in all other conditions (such as package loading or code being sourced from another file.) |
A way to check if code is running at "top level" is to check <code>length(sys.frames())</code>. This value will be zero for a file being run with <code>Rscript</code>, the <code>--file=</code> argument, or at the command line, and will be greater than 0 in all other conditions (such as package loading or code being sourced from another file.) |
||
Line 1,572: | Line 1,475: | ||
$ ./test |
$ ./test |
||
Test: The meaning of life is 42</lang> |
Test: The meaning of life is 42</lang> |
||
=={{header|Scala}}== |
|||
[[Category:Scala Implementations]] |
|||
{{libheader|Scala}} |
|||
===Unix version=== |
|||
<lang bash>#!/bin/sh |
|||
exec scala "$0" "$@" |
|||
!# |
|||
def hailstone(n: Int): Stream[Int] = |
|||
n #:: (if (n == 1) Stream.empty else hailstone(if (n % 2 == 0) n / 2 else n * 3 + 1)) |
|||
val nr = argv.headOption.map(_.toInt).getOrElse(27) |
|||
val collatz = hailstone(nr) |
|||
println(s"Use the routine to show that the hailstone sequence for the number: $nr.") |
|||
println(collatz.toList) |
|||
println(s"It has ${collatz.length} elements.")</lang> |
|||
===Windows cmd.exe interpretation=== |
|||
<lang winbatch>::#! |
|||
@echo off |
|||
call scala %0 %* |
|||
pause |
|||
goto :eof |
|||
::!# |
|||
def hailstone(n: Int): Stream[Int] = |
|||
n #:: (if (n == 1) Stream.empty else hailstone(if (n % 2 == 0) n / 2 else n * 3 + 1)) |
|||
val nr = argv.headOption.map(_.toInt).getOrElse(27) |
|||
val collatz = hailstone(nr) |
|||
println(s"Use the routine to show that the hailstone sequence for the number: $nr.") |
|||
println(collatz.toList) |
|||
println(s"It has ${collatz.length} elements.") |
|||
</lang>{{out}}<pre>C:\>Hailstone.cmd 42 |
|||
Use the routine to show that the hailstone sequence for the number: 42. |
|||
List(42, 21, 64, 32, 16, 8, 4, 2, 1) |
|||
It has 9 elements.</pre> |
|||
=={{header|Smalltalk}}== |
|||
Note that the ScriptedMain package must be installed in order for test.st to access code from scriptedmain.st. |
|||
Example |
|||
<lang shell>$ gst-package -t ~/.st package.xml &>/dev/null |
|||
$ ./scriptedmain.st |
|||
Main: The meaning of life is 42 |
|||
$ ./test.st |
|||
Test: The meaning of life is 42</lang> |
|||
package.xml |
|||
<lang xml><packages> |
|||
<package> |
|||
<name>ScriptedMain</name> |
|||
<filein>scriptedmain.st</filein> |
|||
<file>scriptedmain.st</file> |
|||
</package> |
|||
</packages></lang> |
|||
scriptedmain.st |
|||
<lang smalltalk>"exec" "gst" "-f" "$0" "$0" "$@" |
|||
"exit" |
|||
Object subclass: ScriptedMain [ |
|||
ScriptedMain class >> meaningOfLife [ ^42 ] |
|||
] |
|||
| main | |
|||
main := [ |
|||
Transcript show: 'Main: The meaning of life is ', ((ScriptedMain meaningOfLife) printString); cr. |
|||
]. |
|||
(((Smalltalk getArgc) > 0) and: [ ((Smalltalk getArgv: 1) endsWith: 'scriptedmain.st') ]) ifTrue: [ |
|||
main value. |
|||
].</lang> |
|||
test.st |
|||
<lang smalltalk>"exec" "gst" "-f" "$0" "$0" "$@" |
|||
"exit" |
|||
" |
|||
PackageLoader fileInPackage: 'ScriptedMain'. |
|||
Transcript show: 'Test: The meaning of life is ', ((ScriptedMain meaningOfLife) printString); cr.</lang> |
|||
=={{header|SAC}}== |
=={{header|SAC}}== |