F # lässt Sie Operatoren in Funktionen umwandeln, indem Sie sie mit (
umgeben: Beispiel: (+)
ist vom Typ int -> int -> int
.Verwenden Sie den Listen-Cons-Operator (a :: b) als Funktion
Ist es möglich, dies mit dem Listen-Cons-Operator ::
zu tun?
Es verhält sich nicht wie ein normaler Binäroperators:
FSI> (::);;
(::);;
-^^
c:\temp\stdin(3,2): error FS0010: Unexpected symbol '::' in expression.
Expected ')' or other token.
Und die List.Cons
Methode nimmt ein Tupel; es ist nicht curried.
(Es ist nützlich, dies zu tun. Zum Beispiel können Sie es verwenden, um map in terms of fold zu implementieren).
Kannst du nicht einfach einen kleinen Wrapper um '' 'oder' List.Cons' schreiben? – leppie
Ookay, das ist wirklich komisch. Du kannst einfach 'fun x y -> x :: y' gehen, aber ich habe keine Ahnung, warum es so eine sinnlose Inkonsistenz gibt - Vielleicht, weil' :: 'in Musteranpassungen verwendet werden kann und speziell behandelt wird? Aber das wäre immer noch kein Grund. – Dario
Interessante Frage. Das funktioniert für concat '(@)' gedacht. – Stringer