About

I am a software developer in Seattle, building a new AI software company.

Ads

August 2009

Sun Mon Tue Wed Thu Fri Sat
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          

Ads


« Wordprocessing | Main | LINQ Update »

May 13, 2006

Comments

David Stone

It is interesting how much LINQ is brining the more functional aspects of earlier languages like Lisp to .NET.

As a side note, treaps are fun aren't they? In my CSE 100 class, we had to implement treaps. They're pretty spiffy. And, contrary to popular belief, they're not that hard to implement. :)

Jack H

Speaking of efficient sequences, you might want to check out the work that Ralph Hinze and Ross Patterson have done on "finger trees" at:
http://www.soi.city.ac.uk/~ross/papers/FingerTree.html

Finger Trees underly the implementation of the Data.Sequence library in the Haskell base.

Ross Paterson's work on Applicative Arrows (and Arrows, generally) might also interest you in this regard.

Dejan Jelovic

Re Treaps:

Be careful with asymptotical speeds of various data structures, they tend to have little relevance on today's architectures. What matters most is data density and cache-hit rates.

Red-black trees, for example, are awful. Check out Judy (http://judy.sourceforge.net/doc/10minutes.htm) for an example of a data structure designed with the cache hierarchy in mind.

At one point languages with only immutable variables have almost caught up with the performance of languages that offer mutable variables, but in the last few years the gap has dramatically widened again on real-world benchmarks.

Dejan

Wesner Moise

I am careful with asymptotic. The tree structures I use hold a list of values per node for better locality.

Thanks for the links on finger trees and arrows.

optionsScalper

Hey Wes,

Long time, no talk. Hope things are well.

I have my head buried in FP with F#. I think that the key to a lot of this stuff is the ability to mix, i.e. FP, OO, imperative in any useful combination. FP, like OO and imperative stuff is a tool. With IL, CLR and other .NET infrastructure, choices for implementation open dramatically.

I think that there are places where FP in pure form provide for huge advantage on the .NET platform, e.g. SQLCLR implemented in F#, BizTalk Rules in F#, etc. These are "naturally occuring" as functions in their implementations.

Lambdas, closures, type inference, parametric polymorphism (generics) and other features are implemented in F#. It has serious performance too. My friend Chad, just wrote an article using F# on a Grid Computing Platform.

http://cs.jjbresearch.org/blogs/os/archive/2006/05/12/ChadFSharpGridComputing.aspx

I'm looking forward to more advances in Ruby.NET implementations and other languages as well.

I've opened hubFS - THE place for F#. If you are looking at different FP languages in .NET, give this a look:

http://cs.hubFS.net

Regards,

---O

The comments to this entry are closed.