2017-04-11 8 views
3

Wenn auf dem Netz F # Code liest, erscheint der Dollar Operator hier von Zeit zu Zeit, zum Beispiel folgenden: Library patterns Multiple levels of abstraction

jedoch die Symbol and Operator Reference sagt nur „Keine weiteren Informationen verfügbar“.

Was macht der Operator tatsächlich, und weiß jemand, wo er eine echte Dokumentation finden kann?

+2

Ziemlich sicher, dass dies kein Standard-Operator ist. Wahrscheinlich nur ein Operator aus einer Bibliothek –

+2

Vielleicht weil es * kein * Sprachoperator ist? Sie haben auf einen Artikel über eine Bibliothek hingewiesen, die 'den $ Operator verwendet, der von der funktionalen 3D DSL kommt, um mehrere Objekte zusammenzufügen '. Dies ist ein benutzerdefinierter Operator, der von einer Bibliothek definiert wird. Überprüfen Sie die Dokumentation der Bibliothek –

+2

@ JohnPalmer ist es nicht, in der Tat ist es in den verknüpften Artikeln –

Antwort

5

In der Sprache gibt es keinen Standardoperator $.

Sie können natürlich definieren. Das Beispiel, das Sie verknüpft haben verwendet diese Definition:

let ($) (DF a) (DF b) = DF (fun ctx -> 
    a(ctx) 
    b(ctx)) 

wo DF über definiert:

type Drawing3D = DF of (Drawing3DContext -> unit) 

Des Weiteren gibt es auch spezielle Einschränkungen rund um die Nutzung des $ Symbol in komplexeren Operator Namen, zum Beispiel die folgenden:

let (<$>) f x = List.map f x 

Wird r Dies führt zu einem Compilerfehler.

Fehler FS0035: Dieses Konstrukt ist veraltet: ‚$‘ nicht erlaubt ist, als Charakter in Operatornamen und ist für zukünftige Anwendungen reserviert