trap tag songs reggaeton preguntas las challenge canciones f#

f# - songs - tag de las 20 preguntas



¿Cuáles son los cambios recientes en F#? (3)

Estoy empezando a aprender F #. Soy muy versado en lenguajes de programación como C # (y uso de .NET framework en general), pero la programación funcional es nueva para mí. La forma en que aprendo mejor es tomando un libro sobre el tema y comenzando a leer, así que tomé una copia de "Expert F #" y "F # para científicos". Algunas veces me dio la impresión de que esos libros ya parecen estar desactualizados debido a los recientes cambios en el idioma, nada demasiado dramático, pero da la sensación de que puede haber más.

Ahora que F # 2.0 parece haberse estabilizado, sería bueno ver cómo resultó el F # "real" en comparación con las versiones del lenguaje descrito en esos libros (y similares).

Así que mis preguntas son:

  • ¿Qué temas han cambiado desde que se imprimieron los libros y ya no son válidos como se describe? ¿Hay algún capítulo que pueda omitir por completo? (Soy consciente de que alguna funcionalidad se ha transferido al PowerPack, aunque no me queda totalmente claro qué funcionalidad está en el PowerPack y cuál está en la instalación estándar)
  • ¿Qué características del lenguaje se describen correctamente, pero tienen alternativas más nuevas disponibles? (¿Está la descripción de los eventos todavía actualizada?)
  • ¿Qué características del lenguaje debería tener en cuenta que se agregaron (o modificaron) desde que se escribieron esos libros?
  • ¿Hay otros cambios recientes en el idioma que debería conocer?

Edición: Gracias a todos por las respuestas!

En cuanto a las notas de publicación, pude desenterrar las siguientes "notas de publicación detalladas" en el blog de Don Syme''s, aplicando a las versiones de F # después de la 1.9.2 (la versión "Expert F #" menciona como la versión utilizada en el libro):

No encontré nada sobre la versión 1.9.5, ¿existió alguna vez?



Estoy haciendo un windiff de la versión más reciente (1.9.9.9) y anterior (1.9.7.8) de FSharp.

Noté muchas llamadas agregadas a checkNonNull en Array, Seq, Reflect y el módulo de cotización. Supongo que estas llamadas se agregaron para proteger a las F # libs de que se pasen nulos desde otro idioma como C #. ¿Alguna idea de Brian? La función nullArg lanza una nullArg ArgumentNullException.

let inline checkNonNull argName arg = match box arg with | null -> nullArg argName | _ -> ()

  • Hay un nuevo ToString de reemplazo en el conjunto y un formato mejorado para la impresión de mapas y conjuntos con sformat aka printf "% A".
  • Alguna limpieza interna de BigInteger para usar con .net 4.0.
  • Veo muchos cambios internos a async como mencionó Brian.
  • Algunos cambios internos al evento para usar IObserver.

Terminé de revisar todos los archivos fs modificados y la mayoría de los cambios son para funciones privadas que no están expuestas directamente. Lo único que puede afectar al usuario es la impresión diferente de conjuntos y mapas.


Probablemente no pueda dar una respuesta completa, pero aquí hay algunas cosas que vienen a la mente después de haber sufrido cambios no triviales en los últimos dos años que he estado trabajando en F # ...

Cambios menores:

  • Muchas funciones de la biblioteca han sido renombradas . Originalmente hubo una inclinación por los guiones bajos que desde entonces se han eliminado para que sean más parecidos a .Net. Así que, por ejemplo, Seq.to_array ahora es Seq.toArray . Algunos cambios significativos en las API async y de citas también.
  • #light es ahora el valor predeterminado, puede dejar de ponerlo en la parte superior de cada archivo
  • algunos cambios en las API / declaraciones de eventos y enumeraciones (la referencia de idioma y los documentos de la biblioteca en MSDN son buenos para obtener información actualizada)
  • ya no es necesario que [<OverloadID>] para realizar funciones miembro sobrecargadas

Nuevas características:

  • Las unidades de medida eran nuevas en Beta1 .
  • comparison restricciones de comparison e equality fueron nuevas en Beta2 .
  • Restricción unmanaged en RC .
  • (consulte las "notas de la versión" para ver varias versiones, vinculadas en viñetas anteriores, para obtener más información)