What is the (# … #) syntax seen in F# standard library implementation?

前端 未结 2 360
梦毁少年i
梦毁少年i 2020-12-17 08:35

Reading sources of Array2D module, I\'ve stumbled upon this interesting construct in implementation of many core functions, for example:

[

        
相关标签:
2条回答
  • 2020-12-17 09:21

    I think that this has 2 purposes:

    1. These functions compile down to exactly 1 CIL instruction which has to be encoded somewhere, so encoding at the source seems best.
    2. It allows for some extra trickery with defining polymorphic Add functions in a high performance way which is hard with the F# type system.

    You can actually use this but you have to specify the --compiling-fslib (undocumented) and --standalone flags in your code.

    0 讨论(0)
  • 2020-12-17 09:24

    I've found some details in usenet archives: http://osdir.com/ml/lang.fsharp.general/2008-01/msg00009.html

    Embedded IL in F# codes. Is this feature officially supported

    Not really. The 99.9% purpose of this feature is for operations defined in FSharp.Core.dll (called fslib.dll in 1.9.2.9 and before).

    Historically it has been useful to allow end-users to embed IL in order to access .NET IL functionality not accessible by F# library or language constructs using their own embedded IL. The need for this is becoming much more rare, indeed almost non-existent, now that the F# library has matured a bit more. We expect this to continue to be the case. It's even possible that we will make this a library-only feature in the "product" version of F#, though we have not yet made a final decision in this regard.

    This was a message from Don Syme, dated January of 2008.

    0 讨论(0)
提交回复
热议问题