2009-11-26 23 views
8

Ahora que el FSharp v1 ha entrado en Beta, es hora de preguntar por vNext.¿Qué palabra clave reservada en la especificación de lenguaje F # debe implementarse en vNext?

El FSharp language spec define las siguientes palabras reservadas:

atomic break checked component const constraint constructor  
continue eager fixed fori functor include  
method mixin object parallel params process protected pure  
sealed tailcall trait virtual volatile 

cuál de estos le gustaría ver implementadas y por qué?

Una palabra clave por respuesta, por favor.

+1

¡Justo cuando aprendo un idioma, aparece otro! Estoy saltando a Z # –

+0

@Aiden: lol, en realidad busqué en Google por "Z #" ... –

+1

Debería haber un wiki de la comunidad – Brian

Respuesta

2

De alguna manera no puedo seguir su enlace, pero en el caso de que atomic se aplique a la memoria transaccional del software incorporado, este es mi favorito.

+0

Sí, todo lo que hace que el código simultáneo y seguro sea más alcanzable para los simples mortales. –

4

Mi voto es para tailcall.

Si entiendo la intención correctamente, esta sería una palabra clave para marcar las funciones recursivas que el autor intentaría ser recursivo de cola. Si por alguna razón el compilador no puede cumplir, un mensaje de diagnóstico puede ser de gran ayuda.

Tal como está ahora, si usted no puede estructurar su función recursiva correctamente la primera vez que se le informará de esto es la excepción stackoverflow (Sin bandeja previsto)

+0

Tenía la impresión de que el compilador de F # emitía instrucciones de IL de .tail y era capaz de detectar recursiones de llamadas de cola. –

+3

Sí lo hace si escribió su función correcta. Pero si hiciste algo para que no pueda ser recursivo, no lo sabrás hasta que veas la Excepción – mfeingold

+0

Sin necesidad de una palabra clave, el compilador debería advertirme (opcionalmente fallar) cuando vea una función rec sin cola de todos modos . –

1

Buena pregunta, pero difícil de responder. No se puede adivinar exactamente el propósito de cada palabra clave reservada, ¿verdad?

Desde mi punto de vista, pude ver algunos casos de uso útiles para fixed (búferes de tamaño fijo).

0

Yo votaría por eager, si eso significaba que la evaluación era floja por defecto (como en Haskell, pero a diferencia del actual F #).

7

rasgo, asumiendo que el rasgo es algo así como los rasgos de Scala.

+0

He votado a favor y he comenzado este hilo: http://cs.hubfs.net/forums/thread/12413.aspx en hubFS con mi razonamiento y algunas preguntas. –

Cuestiones relacionadas