Mr. Robles

Only available on StudyMode
  • Download(s) : 71
  • Published : January 14, 2013
Open Document
Text Preview
MITC-208 Theory of Programming Language

Tetris Game
F# Programming Language

Samson B. Lavaro
Christopher D. Robles

Submitted to:
Atty. Gilbert D. Hufana
MIT Instructor

October 19, 2012

I. Introduction
The programming Language that we used in developing our system is F# Programming Language. F# is a multi-paradigm .NET language explicitly designed to be an ML suited to the .NET environment. It is rooted in the Core ML design and in particular has a core language largely compatible with OCaml. In other words this means that the syntax of the F# language is similar to ML or OCaml, but the F# language targets .NET Framework, which means that it can natively work with other .NET components and also that it contains several language extensions to allow smooth integration with the .NET object system. Another important aspect mentioned in this description is that F# is multi-paradigm language. This means that it tries to take the best from many programming languages from very different worlds. The first paradigm is functional programming which has a very long tradition and is becoming more important lately for some very appealing properties, including the fact that functional code tends to be easier to test and parallelize and is also extensible in a ways where object oriented code makes extending difficult. The second paradigm is widely adopted object oriented programming, which enables interoperability with other .NET languages. In F# it is often used for implementing elementary data types (meaning that the operations on the type are well known and change very rarely), for grouping a set of elementary functions that are together used to perform some complicated operation (i.e. implementing an interface) and also when working with object oriented user interface frameworks. Finally, the third paradigm supported by F# is language oriented programming (the design of F# in this area is largely influenced by ML, Haskell and also by LINQ). In general, language oriented programming is focused on developing executors for some code which has a structure of a language (be it a declarative language like XML, or a fully powerful language like some subset of F#). In this overview, we will focus on two techniques provided by F# that allow us to give a different meaning to a blocks of F# code. In a programming language theory, this is often called internal domain specific languages, because the code is written in the host language, but is specifically designed as a way for solving problems from some specific domain. A BRIEF HISTORY OF F#

F# is a functional programming language that grew out of the work of Don Syme and his team at Microsoft Research (MSR) in Cambridge, United Kingdom. Syme and his team set out to implement a .NET front end for a functional programming language similar to OCaml. In fact, the initial goal of F# was to port OCaml to .NET, which, in turn, had identified many of the weaknesses of the early .NET 1.1 Common Type System (CTS).One of the key features that differentiated OCaml and the standard .NET languages at the time was OCaml’s more mature type system. In particular, the type system of .NET 1.1 languages was unable to express what is called parametric polymorphism, a key feature of many functional programming languages. This was eventually added to .NET 2.0 as Generics by, among others, Don Syme and Andrew Kennedy, making it possible to implement the first port of a functional programming language atop of .NET. Although F# saw its beginnings somewhere around 2002, crowds didn’t start building until around 2004–2005. These were silent but very productive years, and the occasional releases from Don Syme’s MSR team (that included original team member James Margetson) delivered some impressive batches of new features every time, drawing more and more people’s attention to F#. The community started to take shape, and many initiatives took off, including the HubFS, a community site that...
tracking img