For the past couple of months I have been looking into different aspects of functional programming and learning languages like F# and Haskell.While discussing about this with my friends ( particularly to those who are developers without much academic inclination) I find it sometimes a bit difficult to explain the essence of functional programming as many are not much aware of the basic driver behind the design of the imperative languages.After going through couple of papers and articles I found the paper by John Backus titled “Can Programming Be Liberated from the von Neumann Style? A Functional Style and Its Algebra of Programs“ captures what I was looking for but in a rather complex fashion.In this post I will try to explain the basic issues with imperative languages and essence of functional languages in a simpler fashion.
Archive for September, 2009
Tags: Functional Programming
In the last two posts we have discussed about dynamic languages and how DLR allows dynamic languages to run on CLR.In this post we will take a look into the new “dynamic” type in C# and how it works internally.
Let us take a look into the following lines of code:
In my last post I have covered the basics of dynamic languages and now we will see how this dynamic languages fit into the CLR.The core purpose of CLR was to host code written in multiple programming languages.But traditionally it had support for the static languages only.Dynamic Language Runtime (DLR) was conceived as a set of additional libraries in order to fit the dynamic languages into the CLR.Apart from allowing the new dynamic languages to come on board, DLR also facilitates addition of dynamic capabilities in existing CLR supported languages (static) like C#.
The “dynamic” is the new keyword introduced in C# in version 4.0.This adds some kind dynamic capabilities in this statically typed language.But before getting into the details of how this new keyword will be used and what are it’s implication I would prefer to take a quick look into what are dynamic languages, duck typing etc.