F#: FSharp.PowerPack.dll previous to May 2009 CTP

%f

I am learning F#. I got the latest May 2009 CTP. Sometimes when compiling source code I get errors somewhat similar to this one:

error FS0039: The namespace or module
'Sys' is not defined. A construct with
this name was found in
FSharp.PowerPack.dll, which contains
some modules and types that were
implicitly referenced in some previous
versions of F#
. You may need to add an
explicit reference to this DLL in
order to compile this code.

OK. I am adding the reference and error messages are gone. But I am curious.

What happened here? Why the sudden change from implicitly referenced to an explicit reference? Is it that the PowerPack will become a separate download?

Best Answer

Briefly,

  • back when F# was a research project its libraries were full of tons of stuff
  • now that F# is being 'productized', we have to be more choosy about the stuff that goes in the F# core library (FSharp.Core.dll)
  • thus the library was partitioned into FSharp.Core and FSharp.PowerPack, where the latter library contains older/experimental/back-compat/OCaml-compat stuff that does not meet the bar for shipping as part of the core library

The error message here is effectively a 'transitional' error message, saying that whereas this stuff used to be a part of FSharp.Core, it got moved, and here's how to find it. Basically we're trying not to break everyone while at the same time reducing the public surface area of the core library.

See also

http://blogs.msdn.com/dsyme/archive/2008/12/10/fsharp-to-ship-as-part-of-visual-studio-2010.aspx

Moving forward, the PowerPack will be on CodePlex and will be a vehicle for other experimental and out-of-band library updates.

Related Topic