F # umożliwia przekształcenie operatorów w funkcje poprzez otaczanie ich za pomocą (
)
: na przykład (+)
jest typu int -> int -> int
.Użyj operatora listy (a :: b) jako funkcji
Czy można to zrobić z listą operatorów kos, ::
?
on nie zachowuje się jak normalny operatorem binarnym:
FSI> (::);;
(::);;
-^^
c:\temp\stdin(3,2): error FS0010: Unexpected symbol '::' in expression.
Expected ')' or other token.
i sposobu List.Cons
trwa krotki; to nie jest curry.
(Przydaje się to zrobić, na przykład można go użyć do implementacji map in terms of fold).
Nie możesz po prostu napisać małego opakowania wokół '::' lub 'List.Cons'? – leppie
Ookay, to naprawdę dziwne. Możesz po prostu przejść "fun x y -> x :: y", ale nie mam pojęcia, dlaczego istnieje taka bezmyślna niespójność - może dlatego, że '::' może być używane w dopasowaniach wzorców i traktowane jest jako specjalne? Ale nadal nie ma powodu. – Dario
Interesujące pytanie. Działa to dla myśli concat '(@)'. – Stringer