2011-01-29 8 views
5

Desde septiembre, he estado jugando con Clojure, un lenguaje de lisp funcional en la JVM. Lo usé en un par de pequeños proyectos de hobby. El lenguaje es muy conciso, simple, pero llegué a la conclusión de que las expresiones s no son realmente para mí.F # en Linux, sin experiencia .NET previa

Existen otros lenguajes funcionales como Scala, Haskell, OCaml, etc., pero parecen ser más de idiomas académicos.

Últimamente estoy considerando aprender F # en mi tiempo libre. Tengo un par de preguntas:

  • Soy principalmente un usuario de Linux. Me preocupa que Mono se esté quedando atrás.
  • Estoy haciendo principalmente web-dev en un lenguaje dinámico con el que estoy satisfecho. Usaría F # para algunas aplicaciones de GUI de hobby o juegos simples. ¿Hay un buen apoyo para ambos? ¿Se puede usar Mono/F # por ejemplo en dispositivos Iphone o Android?

Cuando estaba aprendiendo Clojure, tenía poca experiencia en Java. Esto no resultó ser un gran problema. La interoperabilidad de Java fue muy fácil, y Java como un lenguaje también es bastante sencillo, así que no tuve problemas para leer la documentación.

  • ¿Es fácil la interoperabilidad de F #, y la falta de conocimiento de .NET/C# plantea una dificultad al usar bibliotecas externas?
  • Por último, que los recursos/libros serían adecuados para mí aprender F # (un poco de experiencia funcional, ninguno .NET/C#)

Gracias

+1

Si fuera usted, usaría OCaml o Haskell en su lugar. Hay mucho más Haskell y OCaml en producción que F #. –

+1

Son tentadores, por supuesto, pero existe la desventaja de que no se ejecutan en ninguna de las principales plataformas, jvm/net. – markin

+0

@Rafe: "Hay mucho más Haskell y OCaml en producción que F #". OCaml, tal vez. Haskell, lo dudo seriamente. –

Respuesta

9

ha habido un gran progreso en conseguir F # para trabajar bien en Mac y Linux:

  • En En noviembre de 2010, el equipo F # anunció una versión de código abierto (Apache) del código fuente F #.El equipo de Mono está planeando integrarlo en la próxima versión de Mono (ver Miguel de Icaza's blog).

  • La gente de Mono ya comenzó a trabajar en la integración y tienen una versión con Makefiles Mono-style, que puedes get & build from Github. Si no quiere construir F # usted mismo, también puede usar community-created Max/Linux package available here.

  • Creé un F# integration for MonoDevelop que le da una experiencia de usuario bastante buena (incluyendo sugerencias de herramientas con información de tipo, verificación de tipo de fondo y finalización).

En cuanto a interoperabilidad - F # funciona bastante bien en Mono y debe, en principio, ejecutar en cualquier lugar donde trabaja Mono (yo esperaría Android debería funcionar, pero no lo probamos). No funcionará en el iPhone (aunque C# funciona), porque hay bastantes limitaciones en esa versión de Mono.

+0

¿Te importaría dar un ejemplo de una limitación de iPhone/Mono que obstaculiza F # pero no C#? –

+0

@Joel: Hasta donde yo sé, la versión para iPhone de Mono borra genéricos de alguna manera extraña. No estoy seguro de si esta es información actualizada (se basa solo en una discusión de barra nocturna con Miguel en el taller de educación F # :-)) –

+0

¿Por qué afectaría F # de manera diferente a C#? –

1

Mono es suficiente si usted no está tratando de buenas cabalgar en el borde sangrante de la ola de bombo. F # funciona bien con eso.

La interoperabilidad .NET con API tipo C, utilizando PInvoke, no es difícil de usar. Lleva tiempo si vincula una gran API, difícil.

Creo que Mono tiene algo de compatibilidad con iPhone y no conoce la compatibilidad de Android. Pero no trabajo con la programación móvil, así que, tómenlo con un grano de sal.

Para libros mi favorito personal es F# for Scientists por Jon Harrop. Cubre suficiente material para ser interesante, incluso si no te gusta la informática científica y está muy bien escrito.

+0

Mono tiene soporte para iPhone, vea http://MonoTouch.net y Android también, vea http://MonoDroid.net – bitek

+0

"mi favorito es F # para científicos por Jon Harrop". ¡Gracias! –

0

En Ubuntu, al menos, querrá compilar Mono 2.8.2 y F # usted mismo.

Tengo Expert F # 2.0 y es bueno, también, pero he encontrado que todos los demás autores de libros están activos en Stack Overflow.

Hasta ahora he utilizado mucho menos C# /. NET con F # que he tenido que usar material Java con Clojure, en realidad.

F # es en gran medida una catedral en este momento, pero es bastante ...