mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	Add the X10 language (http://x10-lang.org/).
This commit is contained in:
		
							
								
								
									
										52
									
								
								samples/X10/Fibonacci.x10
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								samples/X10/Fibonacci.x10
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,52 @@ | ||||
| /* | ||||
|  *  This file is part of the X10 project (http://x10-lang.org). | ||||
|  * | ||||
|  *  This file is licensed to You under the Eclipse Public License (EPL); | ||||
|  *  You may not use this file except in compliance with the License. | ||||
|  *  You may obtain a copy of the License at | ||||
|  *      http://www.opensource.org/licenses/eclipse-1.0.php | ||||
|  * | ||||
|  *  (C) Copyright IBM Corporation 2006-2014. | ||||
|  */ | ||||
|  | ||||
| import x10.io.Console; | ||||
|  | ||||
| /** | ||||
|  * This is a small program to illustrate the use of  | ||||
|  * <code>async</code> and <code>finish</code> in a  | ||||
|  * prototypical recursive divide-and-conquer algorithm.   | ||||
|  * It is obviously not intended to show a efficient way to | ||||
|  * compute Fibonacci numbers in X10.<p> | ||||
|  * | ||||
|  * The heart of the example is the <code>run</code> method, | ||||
|  * which directly embodies the recursive definition of  | ||||
|  * <pre> | ||||
|  *   fib(n) = fib(n-1)+fib(n-2); | ||||
|  * </pre> | ||||
|  * by using an <code>async</code> to compute <code>fib(n-1)</code> while | ||||
|  * the current activity computes <code>fib(n-2)</code>.  A <code>finish</code> | ||||
|  * is used to ensure that both computations are complete before  | ||||
|  * their results are added together to compute <code>fib(n)</code> | ||||
|  */ | ||||
| public class Fibonacci { | ||||
|  | ||||
|   public static def fib(n:long) { | ||||
|     if (n<=2) return 1; | ||||
|      | ||||
|     val f1:long; | ||||
|     val f2:long; | ||||
|     finish { | ||||
|       async { f1 = fib(n-1); } | ||||
|       f2 = fib(n-2); | ||||
|     } | ||||
|     return f1 + f2; | ||||
|   } | ||||
|  | ||||
|   public static def main(args:Rail[String]) { | ||||
|     val n = (args.size > 0) ? Long.parse(args(0)) : 10; | ||||
|     Console.OUT.println("Computing fib("+n+")"); | ||||
|     val f = fib(n); | ||||
|     Console.OUT.println("fib("+n+") = "+f); | ||||
|   } | ||||
| } | ||||
|  | ||||
		Reference in New Issue
	
	Block a user