This is the documentation for the Scala standard library.

== Package structure ==

The [[scala]] package contains core types like [[scala.Int `Int`]], [[scala.Float `Float`]], [[scala.Array `Array`]]
or [[scala.Option `Option`]] which are accessible in all Scala compilation units without explicit qualification or
imports.

Notable packages include:

  - [[scala.collection    `scala.collection`]] and its sub-packages contain Scala's collections framework
    - [[scala.collection.immutable `scala.collection.immutable`]] - Immutable, sequential data-structures such as
      [[scala.collection.immutable.Vector `Vector`]], [[scala.collection.immutable.List `List`]],
      [[scala.collection.immutable.Range `Range`]], [[scala.collection.immutable.HashMap `HashMap`]] or
      [[scala.collection.immutable.HashSet `HashSet`]]
    - [[scala.collection.mutable `scala.collection.mutable`]] - Mutable, sequential data-structures such as
      [[scala.collection.mutable.ArrayBuffer `ArrayBuffer`]],
      [[scala.collection.mutable.StringBuilder `StringBuilder`]],
      [[scala.collection.mutable.HashMap `HashMap`]] or [[scala.collection.mutable.HashSet `HashSet`]]
    - [[scala.collection.concurrent `scala.collection.concurrent`]] - Mutable, concurrent data-structures such as
      [[scala.collection.concurrent.TrieMap `TrieMap`]]
    - [[scala.collection.parallel.immutable `scala.collection.parallel.immutable`]] - Immutable, parallel
      data-structures such as [[scala.collection.parallel.immutable.ParVector `ParVector`]],
      [[scala.collection.parallel.immutable.ParRange `ParRange`]],
      [[scala.collection.parallel.immutable.ParHashMap `ParHashMap`]] or
      [[scala.collection.parallel.immutable.ParHashSet `ParHashSet`]]
    - [[scala.collection.parallel.mutable `scala.collection.parallel.mutable`]] - Mutable, parallel
      data-structures such as [[scala.collection.parallel.mutable.ParArray `ParArray`]],
      [[scala.collection.parallel.mutable.ParHashMap `ParHashMap`]],
      [[scala.collection.parallel.mutable.ParTrieMap `ParTrieMap`]] or
      [[scala.collection.parallel.mutable.ParHashSet `ParHashSet`]]
  - [[scala.concurrent    `scala.concurrent`]] - Primitives for concurrent programming such as
    [[scala.concurrent.Future `Futures`]] and [[scala.concurrent.Promise `Promises`]]
  - [[scala.io            `scala.io`]]     - Input and output operations
  - [[scala.math          `scala.math`]]   - Basic math functions and additional numeric types like
    [[scala.math.BigInt `BigInt`]] and [[scala.math.BigDecimal `BigDecimal`]]
  - [[scala.sys           `scala.sys`]]    - Interaction with other processes and the operating system
  - [[scala.util.matching `scala.util.matching`]] - [[scala.util.matching.Regex Regular expressions]]

Other packages exist.  See the complete list on the right.

Additional parts of the standard library are shipped as separate libraries. These include:

  - [[scala.reflect       `scala.reflect`]]   - Scala's reflection API (scala-reflect.jar)
  - [[scala.xml           `scala.xml`]]    - XML parsing, manipulation, and serialization (scala-xml.jar)
  - [[scala.swing         `scala.swing`]]  - A convenient wrapper around Java's GUI framework called Swing (scala-swing.jar)
  - [[scala.util.parsing  `scala.util.parsing`]] - Parser combinators (scala-parser-combinators.jar)

== Automatic imports ==

Identifiers in the scala package and the [[scala.Predef `scala.Predef`]] object are always in scope by default.

Some of these identifiers are type aliases provided as shortcuts to commonly used classes.  For example, `List` is an alias for
[[scala.collection.immutable.List `scala.collection.immutable.List`]].

Other aliases refer to classes provided by the underlying platform.  For example, on the JVM, `String` is an alias for `java.lang.String`.
