Loops/Infinite

From Rosetta Code
Revision as of 22:10, 27 April 2009 by rosettacode>Guga360 (added tsql)
Task
Loops/Infinite
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

AWK

<lang awk>BEGIN {

 while(1) {
   print "SPAM"
 }

}</lang>

BASIC

Works with: QuickBasic version 4.5

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>

C#

<lang csharp>while (true) {

   Console.WriteLine("SPAM");

}</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> <lang d>l: writefln("SPAM"); goto l;</lang>

E

<lang e>while (true) {

   println("SPAM")

}</lang>

<lang e>def f() {

   println("SPAM")
   f <- ()

} f <- ()</lang>

The difference between these is that in the second, other activities can be interleaved with the loop; in the first, no other processing will occur in this vat.

Erlang

-module (main).
-export ([main/1]).

main(Any) ->
  io:fwrite("SPAM~n",[]),
  main(Any)

Forth

: email   begin ." SPAM" cr again ;

Fortran

Works with: Fortran version 90 and later
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");

forever [print "SPAM]

Make

spam:
   @echo SPAM
   $(MAKE)

MAXScript

while true do print "SPAM\n"

Metafont

<lang metafont>forever: message "SPAM"; endfor end</lang>

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 useful 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>

Smalltalk

<lang smalltalk>[ true ] whileTrue: [ 'SPAM' displayNl ]</lang>

SNUSP

@\>@\>@\>@\>++++++++++===!/ < < < < \
 |  |  |  \M=@@@@+@+++++# \.>.>.>.>./
 |  |  \A=@@+@@@@+++#
 |  \P=@@+@@+@@+++#
 \S=@@+@+@@@+++#

Standard ML

<lang sml>while true do

 print "SPAM\n";</lang>

or

<lang sml>let

 fun inf_loop () = (
   print "SPAM\n";
   inf_loop ()
 )

in

 inf_loop ()

end</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 useful to provide data to the next loop without using mutable variable.

Transact-SQL

<lang tsql>WHILE 1=1 BEGIN

PRINT "SPAM"

END</lang>

Tcl

<lang tcl>while true {puts SPAM}

  1. or

for {} 1 {} {puts SPAM}</lang>

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