Loops/Infinite: Difference between revisions
No edit summary |
|||
Line 138: | Line 138: | ||
=={{header|Modula-3}}== |
=={{header|Modula-3}}== |
||
<lang modula3>LOOP |
|||
<pre> |
|||
LOOP |
|||
IO.Put("SPAM\n"); |
IO.Put("SPAM\n"); |
||
END; |
END;</lang> |
||
</pre> |
|||
=={{header|OCaml}}== |
=={{header|OCaml}}== |
Revision as of 19:52, 13 February 2009
You are encouraged to solve this task according to the task description, using any language you may know.
Specifically print out "SPAM" followed by a newline in an infinite loop.
ActionScript
<lang actionscript> while (true) {
trace("SPAM");
} </lang>
Ada
<lang ada>loop
Put_Line("SPAM");
end loop;</lang>
ALGOL 68
DO printf($"SPAM"l$) OD
Or the classic "dynamic halt":
loop x: printf($"SPAM"l$); loop x
BASIC
Old-fashioned syntax: <lang qbasic>while 1
print "SPAM"
wend</lang>
Standard BASIC: <lang qbasic>do
print "SPAM"
loop</lang>
Also <lang qbasic>for i = 1 to 10 step 0
print "SPAM"
next i</lang>
With classic (minimal) BASIC, the standard way to make an infinite loop would be:
10 PRINT "SPAM" 20 GOTO 10
Befunge
Because the 2-D code space is toroidal, all loops are infinite unless explicitly stopped with @.
55+"MAPS",,,,,
Brainf***
++++++++++[->++++++>++++++++>+<<<]>+++++> [+++.---.<.>---.+++>.<]
C
<lang c>while(1) puts("SPAM\n");</lang> or <lang c> for(;;) puts("SPAM\n");</lang> or <lang c>do { puts("SPAM\n"); } while(1);</lang>
ColdFusion
This will result in a JRun Servlet Error and heap dump.
With tags:
<cfloop condition = "true NEQ false"> SPAM </cfloop>
With script:
<cfscript> while( true != false ) { writeOutput( "SPAM" ); } </cfscript>
Common Lisp
<lang lisp>(loop (write-line "SPAM"))</lang>
D
<lang d>while(true) writefln("SPAM") ;</lang> <lang d>for(;;) writefln("SPAM") ;</lang>
Erlang
-module (main). -export ([main/1]). main(Any) -> io:fwrite("SPAM~n",[]), main(Any)
Forth
: email begin ." SPAM" cr again ;
Fortran
DO WRITE(*,*) "SPAM" END DO
Although deprecated GOTO is still available
10 WRITE(*,*) "SPAM" GOTO 10
Groovy
while (true) { println 'SPAM' }
Haskell
forever (putStrLn "SPAM")
Icon
procedure main() every write(|"SPAM") end
Java
<lang java>while(true){
System.out.println("SPAM");
}</lang>
<lang java>for(;;){
System.out.println("SPAM");
}</lang>
JavaScript
for (;;) print("SPAM"); while (true) print("SPAM");
Logo
forever [print "SPAM]
Make
spam: @echo SPAM $(MAKE)
MAXScript
while true do print "SPAM\n"
Modula-3
<lang modula3>LOOP
IO.Put("SPAM\n");
END;</lang>
OCaml
<lang ocaml>while true do
print_endline "SPAM"
done</lang>
or
<lang ocaml>let rec inf_loop() =
print_endline "SPAM"; inf_loop()
in inf_loop()</lang>
Seen like this it looks like the "too much functional" danger when a "while" loop looks far simpler, but the functional loop may be usefull to provide data to the next loop without using mutable variable.
Pascal
<lang pascal> while true do
writeln('SPAM');
</lang> Alternatively: <lang pascal> repeat
writeln('SPAM')
until false; </lang>
Perl
<lang perl>print "SPAM\n" while 1;</lang>
PHP
<lang php>while(1)
echo "SPAM\n";</lang>
Pop11
while true do printf('SPAM', '%p\n'); endwhile;
Prolog
repeat, write('SPAM'), nl, fail.
Python
<lang python>while 1:
print "SPAM"</lang>
Note: one can also use: "True" or any other non-false value. In Python the following values are false: 0, "" (empty string), (,) and {} and [] (empty tuples, dictionaries or lists), None (the special object), and the False object. Any non-empty collection or string or non-zero numeric value is considered "True"
Ruby
<lang ruby>loop do
puts "SPAM"
end</lang>
Scheme
<lang scheme>(do ()
(#f) (display "SPAM") (newline))</lang>
SNUSP
@\>@\>@\>@\>++++++++++===!/ < < < < \ | | | \M=@@@@+@+++++# \.>.>.>.>./ | | \A=@@+@@@@+++# | \P=@@+@@+@@+++# \S=@@+@+@@@+++#
UnixPipes
yes SPAM
Unlambda
``ci``s``s`kr``s``s``s``s`k.S`k.P`k.A`k.Mii
V
true [ 'SPAM' puts ] while
Visual Basic
Do Console.WriteLine("SPAM") Loop