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

谁都会走 提交于 2019-11-29 05:30:04

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.

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.

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!