P. 1
scala, haskell and fantom programming language

scala, haskell and fantom programming language

|Views: 525|Likes:
Publicado porChristie Morota

More info:

Published by: Christie Morota on Feb 01, 2011
Copyright:Attribution Non-commercial


Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less





Scala, Haskell and Fantom Programming Language

Raymark D. Dulce (200712952) January 01, 2011

was released in March 2006.Scala Programming Language What is Scala? Scala is a multi-paradigm programming language designed to integrate features of object-oriented programming and functional programming. History of Scala The design of Scala started in 2001 at the cole Polytechnique F d rale de Lausanne (EPFL) by Martin Odersky. Scala code can be decompiled to readable Java code. Micro Edition Connected Limited Device Configuration. is released under a BSD license. the latest release is version 2. As of November 2010.NET implementation). signifying that it is designed to grow with the demands of its users. following on from work on Funnel.NET libraries in the . v2.NET platform in June 2004. including compiler and libraries. enabling Java and other programmers to be more productive. scala-library. and on the . Scala’s operational characteristics are the same as Java’s. The Scala software distribution. The Scala compiler generates byte code that is nearly identical to that generated by the Java compiler. It smoothly integrates features of object-oriented and functional languages.jar.8. A second version of the language. Scala code and Java code are indistinguishable. Sun’s Java compiler. Scala is a general purpose programming language designed to express common programming patterns in a concise. The name Scala stands for ”scalable language”. Odersky had previously worked on Generic Java and javac. In fact. elegant.0. so Scala code can call Java libraries (or . Platforms and License Scala runs on the Java platform(Java Virtual Machine) and is compatible with existing Java programs.1. It also runs on Java Platform. a programming language combining ideas from functional programming and Petri nets. Scala was released late 2003 / early 2004 on the Java platform. Scala has the same compilation model as Java and C-sharp. The only difference is a single extra runtime library. To the JVM. 1 . with the exception of certain constructor operations. and type-safe way.

all of which support Scala. NetBeans or Intellij for example. In particular. it supports higher-order functions. Eclipse. the type system supports: • generic classes • variance annotations • upper and lower type bounds • inner classes and abstract types as object members 2 .Seamless integration with JAVA Existing Java code and programmer skills are fully re-usable. you will be at home with familiar development tools. Types and behavior of objects are described by classes and traits. Scala is statically typed Scala is equipped with an expressive type system that enforces statically that abstractions are used in a safe and coherent manner. Scala’s case classes and its built-in support for pattern matching model algebraic types. the integration is seamless. are byte code compatible with Java so you can make full use of existing Java libraries or existing application code. Scala programs run on the Java VM. and supports currying. Scala is functional Scala is also a functional language in the sense that every function is a value. Classes are extended by subclassing and a flexible mixin-based composition mechanism as a clean replacement for multiple inheritance. Moreover. You can call Scala from Java and you can call Java from Scala. it allows functions to be nested. Scala is object-oriented Scala is a pure object-oriented language in the sense that every value is an object. Scala provides a lightweight syntax for defining anonymous functions.

and closures are constructed automatically depending on the expected type (target typing). and • polymorphic methods. The Hello World Program object HelloWorld { def main(args: Array[String]) { println("Hello. Scala provides a unique combination of language mechanisms that make it easy to smoothly add new language constructs in form of libraries: • any method may be used as an infix or postfix operator.• compound types • explicitly typed self references • views. Scala is extensible In practice. • A joint use of both features facilitates the definition of new statements without extending the syntax and without using macro-like meta programming facilities. world!") } } 3 . the development of domain-specific applications often requires domain-specific language extensions.

It is a standardized. informally named Haskell’. the series culminated in Haskell 98. hence the lambda we use as a logo. was announced in Nov. In particular. producing a new revision once per year. An open-source product of more than twenty years of cutting-edge research. Haskell Prime In early 2006. and as a base for future extensions. This is an ongoing incremental process to revise the language definition. portable version of the language and an accompanying standard library for teaching. it is a polymorphically statically typed. with non-strict semantics and strong static typing. was begun. the Haskell 98 language standard was originally published as The Haskell 98 Report. Haskell is a computer programming language. general-purpose purely functional programming language. intended to specify a stable. The language is named for Haskell Brooks Curry. lazy. whose work in mathematical logic serves as a foundation for functional languages. 2009. Haskell is based on the lambda calculus. History of Haskell Haskell 1. Haskell 98 In late 1997. minimal. named Haskell 2010. purely functional language.Haskell Programming Language What is Haskell? Haskell is an advanced purely-functional programming language. 4 . correct software. the process of defining a successor to the Haskell 98 standard. it allows rapid development of robust.0) was defined in 1990. In January 2003. a revised version was published as Haskell 98 Language and Libraries: The Revised Report.0 The first version of Haskell (Haskell 1. The first revision. concise. quite different from most other programming languages. In February 1999.

definitions of the form fak (n+1) = (n+1) * fak n are no longer allowed.Haskell 2010 Haskell 2010 adds the Foreign Function Interface (FFI) to Haskell. World!" 5 . • A smaller semantic gap between the programmer and the language. that is. clearer. allowing for bindings to other programming languages. The Hello World Program "Hello. PatternGuards. • Fewer errors. LanguagePragma. Why use Haskell? Haskell offers you: • Substantially increased programmer productivity • Shorter. It introduces the Language-Pragma-Syntax-Extension which allows for designating a haskell source as Haskell 2010 or requiring certain Extensions to the Haskell Language. FixityResolution. The names of the extensions introduced in Haskell 2010 are DoAndIfThenElse. HierarchicalModules. RelaxedDependencyAnalysis. NoNPlusKPatterns. EmptyDataDeclarations. World!" OR putStrLn "Hello World" OR main = putStrLn "Hello. fixes some syntax issues (changes in the formal grammar) and bans so-called n-plus-k-patterns. and more maintainable code. ForeignFunctionInterface. higher reliability. LineCommentSyntax. • Shorter lead times.

as they are in C-sharp and Java. but it does have a set of built-in generic types: List. and Javascript.Net programmer but is much less painful to use (no boilerplate). Fantom is designed as a practical programming language to make it easy and fun to get real work done.Erlang etc. Fantom is an exciting new language that targets the Java VM and the CLR.NET CLR. Like C-sharp and Java. Fantom takes a middle of the road approach to its type system. After gaining some popularity. . It borrows it’s Syntax from Java but also adds many features and syntactic sugar created or borrowed from .NET. Typing Fantom’s type system is simple by design. Map. History of Fantom The original name of the Fantom programming language was Fan.Fantom Programming Language What is Fantom? Fantom is a general purpose object-oriented programming language that runs on the JRE.Python. and Func. Fantom rejects generic types due to their complexity. named after the neighborhood where the creators live in Richmond. It is familiar to a Java / . 6 . Fantom uses a curly brace syntax. The language supports functional programming through closures and concurrency through the Actor model. Fantom has an easy to use reflection API and metaprogramming capabilities. the name of the project was officially changed from Fan to Fantom. All variables are statically typed. Fantom can also take on the feel of a dynamically typed language through dynamic calls and automatic downcasting.Groovy. Virginia. blending together aspects of both static and dynamic typing. members of the community raised concerns about the searchability of the name. In November 2009.

They are stored as . the documentation. packages. which are zip files containing the FCode (the Fantom bytecode). If a pod contains a type named Main. The compiler automatically implements boxing and unboxing when necessary. Even dynamic languages like Python and Ruby are getting hosted on one of these VMs.NET CLR.NET model of value types.NET. fwt::Widget is distinct from webapp::Widget. the unit of deployment is called a pod. and double in Java or C-sharp. Object Oriented Fantom follows the . Portability Fantom is created to write software that can seamlessly run on both the Java VM and the . Familiar Syntax Java and C-sharp programmers will feel at home with Fantom’s evolutionary syntax. Int. For example. Pods take on the role of namespaces.NET. and resource files necessary to run the pod. long. A pod name fully qualifies a type name. Unlike Java these types cleanly subclass from Obj to create a unified class hierarchy. 7 . The three special types Bool. The reality is that many software organizations are committed to one or the other of these platforms. then it can be executed on the command line with:fan ¡podName¿ The Fantom build system can package a set of Pods into a Jar archive through build::JarDist. but with much less surface area than the APIs found in Java or . A pod can define any number of types for use in other libraries and applications.Pods In Fantom. and modules. Elegant APIs Quite obsessive about providing all the key features required for a standard library. These types have all the same performance characteristics of using boolean.pod files. and Float are value types which are implemented as primitives in Java and value types in .

World!") } } 8 . Concurrency Fantom tackles concurrency using a couple techniques: • Immutability is built into the language (thread safe classes) • Static fields must be immutable (no shared mutable state) • Actors model for message passing (Erlang style concurrency) The Hello World Program class HelloWorld { static Void main() { echo("Hello. ranges. Functions and closures are baked in. Declarative Programming Fantom incorporates declarative programming right into the language. and durations. uris. The serialization syntax is a clean subset of the programming language .Funtional Programming Fantom was designed from the ground up to support functions as first class objects. Fantom supports a literal syntax for lists. Closures are a key feature of the language. Fantom also includes a text serialization syntax which is human readable and writable. maps.so you can paste a serialization file right into your source code as an expression. and all the APIs are written to use functions and closures where appropriate.

You're Reading a Free Preview

/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->