Loops/Infinite: Difference between revisions

From Rosetta Code
Content added Content deleted
(→‎{{header|SNUSP}}: ++ smalltalk)
No edit summary
Line 243: Line 243:


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

=={{header|Tcl}}==
<lang tcl>while true {puts SPAM}
# or
for {} 1 {} {puts SPAM}</lang>


=={{header|UnixPipes}}==
=={{header|UnixPipes}}==

Revision as of 19:45, 8 April 2009

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>

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"

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.

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