Reading through the main site, the manual and the forum there is a strong focus on R, Python and Matlab as benchmarks for Julia in various ways (not just performance). I have spent more time researching feasible/potential data analysis environments than is healthy and I would like to add one "benchmark" to your list, namely F#. The most interesting thing about F# in this instance is that it takes a different approach to R, Python and Matlab (all quite similar to one another as dynamic scripting language that drop into C for performance with vectorization the main code metaphor). My intention is not to start a discussion on the pros and cons of Julia versus F# versus xxx, but rather to draw the core team's attention to some really useful features of the F# language design that could perhaps be incorporated into Julia:
At the heart of the above lies the question: can Julia support coding in the style of a full functional language given that functions are without doubt first class citizens of the language?
Note that pattern matching is not even mentioned! It's just syntactic
sugar in a dynamically typed language anyway.
v => cos => filter(f) => map(g)
Reading through the main site, the manual and the forum there is a strong focus on R, Python and Matlab as benchmarks for Julia in various ways (not just performance). I have spent more time researching feasible/potential data analysis environments than is healthy and I would like to add one "benchmark" to your list, namely F#.
The most interesting thing about F# in this instance is that it takes a different approach to R, Python and Matlab (all quite similar to one another as dynamic scripting language that drop into C for performance with vectorization the main code metaphor). My intention is not to start a discussion on the pros and cons of Julia versus F# versus xxx, but rather to draw the core team's attention to some really useful features of the F# language design that could perhaps be incorporated into Julia:
- Pipeline Operator: This is a highly intuitive way to code on a high-level. It requires higher order functions (Julia has) and partial functions(?) and currying(?).
- Pattern Matching: Incredibly useful with recursive data structures like Discrimated Unions
- Option Types: these wrap a value that could potentially be empty/null in a consistent manner. Could this somehow relate to allowing for missing values in a manner as natural as R does (per some of the comparisons of Julia and R)?
typealias Maybe{T} Union(Nothing,T)
At the heart of the above lies the question: can Julia support coding in the style of a full functional language given that functions are without doubt first class citizens of the language?
You can certainly do this in Julia:typealias Maybe{T} Union(Nothing,T)
Let's be honest though — option types suck.
...
I dunno? Does this thread answer the question in the affirmative? I hope so. I feel like all we need at this points are monads and some more category theory ;-)
I would not recommend that. Parsing code at run time is not really practical.
F# is an open source langage released under Apache licence.You can run it on your Mac as much as you want, and it is part of standard release of Mono, the open source dotnet.
Let's be honest though — option types suck.All reference types in Java are essentially option types and it's pretty much the worst thing in the world.
Option types refers to a type system existence of null as a type by itself, while Java's null reference is pretty much the opposite of this. It is actually very useful to catch those errors at compile time, you should try it