Logo

Programming-Idioms

Basic implementation of the Echo program: Print all arguments except the program name, separated by space, followed by newline.
The idiom demonstrates how to skip the first argument if necessary, concatenate arguments as strings, append newline and print it to stdout.
Implementation
Ada

Implementation edit is for fixing errors and enhancing with metadata. Please do not replace the code below with a different implementation.

Instead of changing the code of the snippet, consider creating another Ada implementation.

Be concise.

Be useful.

All contributions dictatorially edited by webmasters to match personal tastes.

Please do not paste any copyright violating material.

Please try to avoid dependencies to third-party libraries and frameworks.

Other implementations
main(Argv) :- echo(Argv).

echo([]) :- nl.
echo([Last]) :- write(Last), echo([]).
echo([H|T]) :- write(H), write(' '), echo(T).
import sys
print(' '.join(sys.argv[1:]))
printf("%s\n", ARGV.join(' '))
println(args.mkString(" "))
(display (string-join (list-tail (command-line) 1) " "))
(newline)
echo implode(' ', array_slice($argv, 1)), PHP_EOL;
print "@ARGV\n"
PROGRAM Echo;

VAR
    I: Integer;
BEGIN
    for I := 1 to ParamCount - 1 do
        Write(ParamStr(I), ' ');
    if (ParamCount > 0) then
        Write(ParamStr(ParamCount));
    WriteLn();
END.
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
    while (*++argv) {
        printf("%s", *argv);
        if (argv[1]) printf(" ");
    }
    printf("\n");
    return EXIT_SUCCESS;
}
console.log(process.argv.slice(2).join(" "));
import "fmt"
import "os"
import "strings"
func main() {
    fmt.Println(strings.Join(os.Args[1:], " "))
}
(format t "~{~A~^ ~}~%" *args*)
(println (clojure.string/join " " *command-line-args*))
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
    while (*++argv) {
        printf("%s", *argv);
        if (argv[1]) printf(" ");
    }
    printf("\n");
    return EXIT_SUCCESS;
}
import static java.lang.String.join;
import static java.lang.System.out;
public class Echo {
    public static void main(final String... args) {
        out.println(join(" ", args));
    }
}
use std::env;
println!("{}", env::args().skip(1).collect::<Vec<_>>().join(" "));
import std.string, std.stdio;
void main(string[] args)
{
	args[1..$].join(" ").writeln;
}
main(List<String> args) {
  print(args.join(' '));
}
import System.Environment
putStrLn . unwords =<< System.Environment.getArgs
print( table.concat( arg, " " ) )
using System;
public class Program
{
    public static void Main(string[] args)
    {
        Console.WriteLine(string.Join(" ", args));
    }
}
Enum.join(args, " ")
import std.stdio : writeln;
import std.algorithm.iteration : joiner;
import std.range : dropOne;
void main(string[] args)
{
	writeln(args.dropOne.joiner(" "));
}
#include <iostream>
int main(int argc, char * argv[])
{
	for(int i = 1; i < argc; ++i)
	{
		std::cout <<(1==i ? "" : " ") << argv[i];
	}
        std::cout <<std::endl;
}
puts ARGV.join(' ')
-module(echo).
-export([main/1, main/0]).
main() ->
    main(init:get_plain_arguments()).

main(ARGV) ->
    io:format("~s~n", [lists:join(" ", ARGV)]).
program x
  implicit none
  character (len=:), allocatable :: a
  integer :: n, i, l
  n = command_argument_count()
  a = ''
  do i=1,n
     call get_command_argument(i, a, l)
     if (l > len(a)) then
        deallocate (a)
        allocate (character(len=l) :: a)
        call get_command_argument(i, a)
     end if
     write (unit=*,fmt='(A)', advance="no") a
     if (i < n) then
        write (unit=*,fmt='(" ")', advance="no")
     else
        write (unit=*,fmt='()')
     end if
  end do
end
fun main(args: Array<String>) = args.forEach(::println)
use itertools::Itertools;
println!("{}", std::env::args().skip(1).format(" "));
@import Foundation;
int main() {
  NSArray *all=NSProcessInfo.processInfo.arguments;
  NSArray *args=[all subarrayWithRange:NSMakeRange(1,all.count-1)];
  puts([args componentsJoinedByString:@" "].UTF8String);
  return 0;
}
" Implementation: Visual Works "
| args arg sep |
args := CEnvironment commandLine readStream.
args next.    " skip executable name "
sep := [args peek isNil not ifTrue: [' '] ifFalse: ['']].
[ (arg := args next) isNil ] whileFalse: [
    Transcript show: arg; show: (sep value).
].
Transcript cr. " cr -> carriage return; ie. newline "