summaryrefslogtreecommitdiff
path: root/tests/examplefiles/99_bottles_of_beer.chpl
diff options
context:
space:
mode:
Diffstat (limited to 'tests/examplefiles/99_bottles_of_beer.chpl')
-rw-r--r--tests/examplefiles/99_bottles_of_beer.chpl206
1 files changed, 0 insertions, 206 deletions
diff --git a/tests/examplefiles/99_bottles_of_beer.chpl b/tests/examplefiles/99_bottles_of_beer.chpl
deleted file mode 100644
index ff50b294..00000000
--- a/tests/examplefiles/99_bottles_of_beer.chpl
+++ /dev/null
@@ -1,206 +0,0 @@
-/***********************************************************************
- * Chapel implementation of "99 bottles of beer"
- *
- * by Brad Chamberlain and Steve Deitz
- * 07/13/2006 in Knoxville airport while waiting for flight home from
- * HPLS workshop
- * compiles and runs with chpl compiler version 1.12.0
- * for more information, contact: chapel_info@cray.com
- *
- *
- * Notes:
- * o as in all good parallel computations, boundary conditions
- * constitute the vast bulk of complexity in this code (invite Brad to
- * tell you about his zany boundary condition simplification scheme)
- * o uses type inference for variables, arguments
- * o relies on integer->string coercions
- * o uses named argument passing (for documentation purposes only)
- ***********************************************************************/
-
-// allow executable command-line specification of number of bottles
-// (e.g., ./a.out -snumBottles=999999)
-config const numBottles = 99;
-const numVerses = numBottles+1;
-
-// a domain to describe the space of lyrics
-var LyricsSpace: domain(1) = {1..numVerses};
-
-// array of lyrics
-var Lyrics: [LyricsSpace] string;
-
-// parallel computation of lyrics array
-[verse in LyricsSpace] Lyrics(verse) = computeLyric(verse);
-
-// as in any good parallel language, I/O to stdout is serialized.
-// (Note that I/O to a file could be parallelized using a parallel
-// prefix computation on the verse strings' lengths with file seeking)
-writeln(Lyrics);
-
-
-// HELPER FUNCTIONS:
-
-proc computeLyric(verseNum) {
- var bottleNum = numBottles - (verseNum - 1);
- var nextBottle = (bottleNum + numVerses - 1)%numVerses;
- return "\n" // disguise space used to separate elements in array I/O
- + describeBottles(bottleNum, startOfVerse=true) + " on the wall, "
- + describeBottles(bottleNum) + ".\n"
- + computeAction(bottleNum)
- + describeBottles(nextBottle) + " on the wall.\n";
-}
-
-
-proc describeBottles(bottleNum, startOfVerse:bool = false) {
- // NOTE: bool should not be necessary here (^^^^); working around bug
- var bottleDescription = if (bottleNum) then bottleNum:string
- else (if startOfVerse then "N"
- else "n")
- + "o more";
- return bottleDescription
- + " bottle" + (if (bottleNum == 1) then "" else "s")
- + " of beer";
-}
-
-
-proc computeAction(bottleNum) {
- return if (bottleNum == 0) then "Go to the store and buy some more, "
- else "Take one down and pass it around, ";
-}
-
-
-// Modules...
-module M1 {
- var x = 10;
-
- var y = 13.0;
-}
-
-module M2 {
- use M1 except y;
- use M1 only y;
- proc main() {
- writeln("M2 -> M1 -> x " + x);
- }
-}
-
-
-// Classes, records, unions...
-const PI: real = 3.14159;
-
-record Point {
- var x, y: real;
-}
-var p: Point;
-writeln("Distance from origin: " + sqrt(p.x ** 2 + p.y ** 2));
-p = new Point(1.0, 2.0);
-writeln("Distance from origin: " + sqrt(p.x ** 2 + p.y ** 2));
-
-class Circle {
- var p: Point;
- var r: real;
-}
-var c = new Circle(r=2.0);
-proc Circle.area()
- return PI * r ** 2;
-writeln("Area of circle: " + c.area());
-
-class Oval: Circle {
- var r2: real;
-}
-proc Oval.area()
- return PI * r * r2;
-
-delete c;
-c = nil;
-c = new Oval(r=1.0, r2=2.0);
-writeln("Area of oval: " + c.area());
-
-// This is a valid decimal integer:
-var x = 0000000000012;
-
-union U {
- var i: int;
- var r: real;
-}
-
-// chapel ranges are awesome.
-var r1 = 1..10, // 1 2 3 4 5 6 7 8 9 10
- r2 = 10..1, // no values in this range
- r3 = 1..10 by -1, // 10 9 8 7 6 5 4 3 2 1
- r4 = 1..10 by 2, // 1 3 5 7 9
- r5 = 1..10 by 2 align 0, // 2 4 6 8 10
- r6 = 1..10 by 2 align 2, // 2 4 6 8 10
- r7 = 1..10 # 3, // 1 2 3
- r8 = 1..10 # -2, // 9 10
- r9 = 1..100 # 10 by 2, // 1 3 5 7 9
- ra = 1..100 by 2 # 10, // 1 3 5 7 9 11 13 15 17 19
- rb = 1.. # 100 by 10; // 1 11 21 31 41 51 61 71 81 91
-
-// create a variable with default initialization
-var myVarWithoutInit: real = noinit;
-myVarWithoutInit = 1.0;
-
-// Chapel has <~> operator for read and write I/O operations.
-class IntPair {
- var x: int;
- var y: int;
- proc readWriteThis(f) {
- f <~> x <~> new ioLiteral(",") <~> y <~> new ioNewline();
- }
-}
-var ip = new IntPair(17,2);
-write(ip);
-
-var targetDom = {1..10},
- target: [targetDom] int;
-coforall i in targetDom with (ref target) {
- target[i] = i ** 3;
-}
-
-var wideOpen = 0o777,
- mememe = 0o600,
- clique_y = 0O660,
- zeroOct = 0o0,
- minPosOct = 0O1;
-
-private module M3 {
- private proc foo() {
-
- }
-
- private iter bar() {
- for i in 1..10 {
- yield i;
- }
- }
-
- private var x: int;
-
-}
-prototype module X {
-
- proc f() throws {
- throw new Error();
- }
-
- proc g() {
- try {
- f();
- try! f();
- } catch e {
- writeln("Caught ", e);
- }
- }
-
- proc int.add() { }
-
- g();
-
- override proc test() throws {
- var a = new borrowed IntPair();
- var b = new owned IntPair();
- var c = new shared IntPair();
- throw new unmanaged Error();
- }
-}
-