Para responder a la segunda parte de su pregunta, tipos genéricos en F # pueden especificarse utilizando la sintaxis de estilo O'Caml donde el parámetro genérico precede el tipo (por ejemplo 'a list
, int array
, etc. .), o el estilo .NET con corchetes (por ejemplo, list<'a>
, array<int>
, etc.), por lo que las dos definiciones son básicamente equivalentes (excepto que su versión como está escrita no es sintácticamente válida porque lazy
es una palabra clave). Para los tipos genéricos multiparámetros, el estilo O'Caml está en desuso y generará una advertencia (por ejemplo, let (m:(int,string) Map) = Map.empty
se debe volver a escribir como let (m:Map<int,string>) = Map.empty
).
De hecho, se le permite utilizar cualquier cadena como un identificador, por lo que es aficionado a los identificadores con signos de interrogación (ALA Rubí) se puede decir:? \t Let '' '' es bueno = false Aunque No estoy convencido de que esta sea realmente una buena forma de escribir código. – Robert