Topics

Featured in Development

Understandability is the concept that a system should be presented so that an engineer can easily comprehend it. The more understandable a system is, the easier it will be for engineers to change it in a predictable and safe manner. A system is understandable if it meets the following criteria: complete, concise, clear, and organized.

Featured in Architecture & Design

Sonali Sharma and Shriya Arora describe how Netflix solved a complex join of two high-volume event streams using Flink. They also talk about managing out of order events and processing late arriving data, exploring keyed state for maintaining large state, fault tolerance of a stateful application, strategies for failure recovery, data validation batch vs streaming, and more.

Featured in Culture & Methods

Tim Cochran presents research gathered from ThoughtWorks' varied clients and projects, and shows some of the metrics their teams have identified as guides to creating the platform and the culture for high performing teams.

LINQ for F#

F# 3.0, included in the Visual Studio 11 beta, gains the ability to use LINQ expressions.

While F# has always had access to the underlying libraries that make LINQ possible, F# 3 marks the first version where the LINQ syntax is actually supported. Like Visual Basic, F#’s LINQ supports aggregate functions such as count, sum, first, and last directly in the query. Also like VB, F# doesn’t require a trailing “select” clause. Instead all queries need to be inside an expression that begins with “query {“ and ends with a matching brace.

LINQ or Language Integrated Query is a SQL-like syntax originally developed for the research language Cω and eventually released in Visual Basic and C#. While distinct, it is conceptually similar to languages from 80’s and 90’s such as dBase and PowerBuilder.

An interesting feature of type providers is that they feed into Visual Studio’s IntelliSense at design time. This does mean that there will be times when the code-completion hints show “loading” instead of the actual properties and methods. The delay will depend on the particular type provider and how responsive the server on the far side is.

F# will also be including support for Portable Libraries. Portable Libraries are DLLs that can be shared between .NET, Silverlight, Windows Phone, and/or XNA without recompiling separate versions.

Finally, F# 3 offers auto-implemented properties via the “member val” keyword. Properties need to be initialized as part of their declaration, and mutable properties need the suffix “with get, set”.

Tell us what you think

Community comments

workflows

Your message is awaiting moderation. Thank you for participating in the discussion.

Interesting to see queries are represented as workflows, which already existing in F#2. I wonder if they had to beef up the workflow semantics/interface to do this? Regardless, it's a strong argument for the syntactic power of F# workflows.

Also curious that each query starts with " for student in db.Student do" and the remaining statements have no indenting. It will be interesting to look into the implementation of this and why they chose that strategy.