Scala (programming language): Difference between revisions

From Citizendium
Jump to navigation Jump to search
imported>Yuvi Masory
No edit summary
imported>Yuvi Masory
No edit summary
Line 1: Line 1:
{{subpages}}
{{subpages}}


'''Scala''' (pronounced /skala/) is a statically typed hybrid functional/object-oriented programming language . It compiles to the [[Java]] Virtual Machine (JVM) and has full access to classes, libraries and modules used in the host language. Scala combines aspects of functional languages such as Haskell and Erlang with the object systems of more mainstream languages such as Java and C#. A .NET implementation also exists, but is not as well maintained and has not seen significant use.
'''Scala''' (pronounced /skala/) is a statically typed hybrid functional/object-oriented programming language . It compiles to the [[Java]] Virtual Machine (JVM) and has full access to Java classes and libraries. Scala combines aspects of functional languages such as Haskell and Erlang with the object systems of more mainstream languages such as Java and C#. A .NET implementation also exists, but is not as well maintained and has not seen significant use.


== Overview ==
== Overview ==

Revision as of 10:58, 13 July 2010

This article is a stub and thus not approved.
Main Article
Discussion
Related Articles  [?]
Bibliography  [?]
External Links  [?]
Citable Version  [?]
 
This editable Main Article is under development and subject to a disclaimer.

Scala (pronounced /skala/) is a statically typed hybrid functional/object-oriented programming language . It compiles to the Java Virtual Machine (JVM) and has full access to Java classes and libraries. Scala combines aspects of functional languages such as Haskell and Erlang with the object systems of more mainstream languages such as Java and C#. A .NET implementation also exists, but is not as well maintained and has not seen significant use.

Overview

The powerful traits system allows the object/type system to be significantly more flexible, in much the same way that Ruby's "mixins" do. The current Scala implementation allows you to compile code using scalac, and to run Scala code interactively in a Scala shell.

Design Trade-offs

Prime Number Example

/** Print prime numbers less than 100, very inefficiently */
object primes extends Application {
  def isPrime(n: Int) = (2 until n) forall (n % _ != 0)
  for (i <- 1 to 100 if isPrime(i)) println(i)
}

[1]

This example code shows a number of features of the language, including the cross-over between the object-orientated and functional styles. An object is being defined rather than a class, following the Singleton pattern. The object uses the Application trait to turn it into an executable script. It defines a method on the primes object called isPrime which takes one Int object (Scala wraps Java's built-in int type in an object with an upper-case first character) and iterates on all numbers from two through n (the "(2 until n)" constructs a list of all those numbers), and then calculates if it is prime by dividing n by that number and seeing if it returns zero. forall is being called as a method on the array constructed by the first bracketed segment in the method definition, and the second bracketed segment contains the loop - an anonymous or lambda function. The underscore character stands in for the current iteration. The for loop shows how iteration is conducted in Scala. println at the end of the line is a call to the System.out.println method in the Java library.


Notes