F# 4.0 Preview
Written by Kay Ewbank   
Tuesday, 02 December 2014

Microsoft has announced a pre-release version of F# 4.0 and the latest Visual F# Tools for Visual Studio 2015 Preview.

A version of the F# development tools were included with the VS 2015 Preview download, but the versions that were included had been branched for stabilization some time ago, and the developers say they’ve have made significant progress since then.

The F#4 is an early preview of what will be available in the final version. Among the new features are constructors as first-class functions. Until now there has been no way to treat a type constructor as an isolated function that could be passed around and composed with other functions. The new version treats constructors as first-class functions, with the same treatment as other traditional .NET methods.

So rather than writing this:

you can now write:

Fneweg

The treatment of mutable values has been simplified. According to the Visual Studio F# team blog,

“In the past, the ‘mutable’ keyword was used to designate a stack-based mutable value, and that value could be mutated using the <- operator. If the mutable value happened to be captured by a closure and a heap-based value was required, the ‘ref’ syntax was needed instead, and mutation was done via the := operator.”

The team says that having distinct syntaxes led to some code inelegance and developer confusion due to not being able to work out ahead of time which approach was going to be required.

With F# 4.0, developers can now just use the ‘mutable’ keyword for all mutable values, and the compiler will take care of the rest, creating a stack-based value if possible, otherwise implicitly converting to a ref cell - as in this example:

Support has also been added for high-dimensional arrays. The .NET framework supports up to 32-dimensional arrays, but in the past F# only supported use of up to rank-4 arrays. This is now fixed – at least in the handling of arrays created in external libraries that rely on high-dimensional arrays. However, F# still doesn’t let you create and manipulate high-rank arrays directly within the language itself.

Another improvement is support for static parameters to provided methods. In previous versions, you could supply static parameters to the top-level provided type, but all other provided types, methods, and properties had to be generated based on this single set of parameters. You can now give a single type declaration along with parameterized usage of methods.

Other changes mean you can slice linked lists in the same way as for arrays for reading elements and creating sub-lists:

Fshslicing

 

The FSharp.Core runtime has also benefited from a number of improvements, including normalized collections modules; faster generic comparison; better async stack traces; and a variety of performance improvements. 

 

Banner


Extend NGINX With The New JavaScript Module
28/10/2024

Inject middleware functionality into NGINX with the expressive power of Javascript. NGINX JavaScript or NJS for short is a dynamic module under which you can use scripting for hooking into the NGINX e [ ... ]



IBM Opensources AI Agents For GitHub Issues
14/11/2024

IBM is launching a new set of AI software engineering agents designed to autonomously resolve GitHub issues. The agents are being made available in an open-source licensing model.


More News

 

espbook

 

Comments




or email your comment to: comments@i-programmer.info

Last Updated ( Tuesday, 02 December 2014 )