2009-11-26 19 views
8

Ora che FSharp v1 è entrato in Beta è ora di chiedere su vNext.Quale parola chiave riservata nella specifica del linguaggio F # dovrebbe essere implementata in vNext?

Il FSharp language spec definisce le seguenti parole chiave riservate:

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 

quale di questi vorresti vedere realizzati e perché?

Una parola chiave per risposta, per favore.

+1

Proprio quando imparo una lingua, ne arriva un'altra! Sto saltando su Z # –

+0

@Aiden: lol, in realtà ho cercato su google "Z #" ... –

+1

Dovrebbe essere un wiki della comunità – Brian

risposta

2

In qualche modo non riesco a seguire il collegamento, ma nel caso in cui lo atomic si applichi alla memoria transazionale del software incorporato, questo è il mio preferito.

+0

Sì, qualsiasi cosa che renda il codice concorrente sicuro più realizzabile per i comuni mortali. –

4

Il mio voto è per tailcall.

Se capisco correttamente l'intenzione, questa sarebbe una parola chiave per contrassegnare le funzioni ricorsive che l'autore intende essere ricorsivo della coda. Se per qualsiasi ragione il compilatore non può conformarsi, un messaggio diagnostico può essere di grande aiuto.

Così com'è ora, se non si riesce a strutturare la vostra funzione ricorsiva correttamente la prima volta che si sarà informato di questo è l'eccezione StackOverflow (No pan intended)

+0

Ho avuto l'impressione che il compilatore F # abbia emesso le istruzioni .tail IL e sia stato in grado di individuare la ricorsione chiamata coda. –

+3

Lo fa se hai scritto correttamente la tua funzione. Ma se hai fatto qualcosa in modo che non possa essere ricorsivo in coda - non lo saprai finché non vedrai l'Eccezione – mfeingold

+0

Non c'è bisogno di una parola chiave, il compilatore dovrebbe avvertirmi (opzionalmente fallire) quando vede comunque una funzione rec senza chiamate tail . –

1

Buona domanda ma difficile da rispondere. Non puoi indovinare esattamente lo scopo di ogni parola chiave riservata, giusto?

Dal mio punto di vista, ho potuto vedere alcuni casi d'uso utili per fixed (buffer di dimensioni fisse).

0

Vorrei votare per eager, se ciò significava che la valutazione era pigra per impostazione predefinita (come in Haskell, ma a differenza dell'attuale F #).

7

tratto, assumere tratti è qualcosa come i tratti Scala.

+0

Ho svuotato questo e ho iniziato questo thread: http://cs.hubfs.net/forums/thread/12413.aspx su hubFS con il mio ragionamento e alcune domande. –

Problemi correlati