Парафразировано из http://cs.hubfs.net/forums/permalink/11713/11713/ShowThread.aspx#11713
(::)
является дискриминационным объединением ' конструктор 'для list<'a> type
, и поэтому поднял вопрос о том, следует ли в качестве значения функции его аргументы (например, +
) или чередовать (как и все конструкторы DU). В любом случае это кажется подозрительным / неожиданным для некоторых людей, поэтому F # просто запрещает конструкцию.
Конечно, вы всегда можете написать, например,
let cons x y = x :: y
и использовать cons
, или просто использовать лямбда fun x y -> x::y
, если вы хотите для этого использовать «префиксную функцию из двух аргументов».