My intention has been to examine, whether F# can be used for various tasks I usually perform with R (http://www.r-project.org/).
As for now, F# looks pretty strange.
It is different in many ways from standard programming languages like C/C+. It is also different from R.
Learning it seems like solving a series of logic puzzles, at this stage.
My (very early) F# code is definitely not optimal, but it may give a hint of what may come later.
Take for example a simple function for calculating return on investment in a bond, used in my previous post.
In R, the function looks like that:
- # expected (discounted) return
- pv <- function(fa,n,cr,rf) {
- -fa+sum(sapply(1:n, function(i) (fa*cr)/(1+rf)^i))+fa/(1+rf)^n
- }
You can see the code in context here: http://pastebin.com/bFEHQQnM
Meanwhile, my F# equivalent is:
At least both functions return the same result :)
The nice thing about F# is that, although Microsoft did not include it in the free Visual Studio Express 2013, there is an online version of the F# available. You can write and test your F# code there.
OK, why F# may look strange? Just a couple of observations:
- calculating power for floats and integers is handled differently - pown for integers and ** for floats
- once a function is used with one type of argument - say int - you cannot use it again with any other type - say float
- separate operations for adding a single element at the beginning of a list (::) and for joining the lists (@)
- some symbol combinations (example: !!!), while it is possible to define the operations they perform, cannot be used between arguments, i.e. !!! 2 3 is fine, while 2 !!! 3 is not
I would like to stress again, that I am at the very beginning of my journey with F#.
The peculiarities of F# have not discouraged me so far. I'd say, it is quite the opposite. They have increased my hunger for learning fore about this bizarre creature ;)
No comments:
Post a Comment