prendere questo codice di esempio (ignorare che sia terribilmente inefficiente per il momento)ricorsivi lambda in F #
let listToString (lst:list<'a>) = ;;' prettify fix
let rec inner (lst:list<'a>) buffer = ;;' prettify fix
match List.length lst with
| 0 -> buffer
| _ -> inner (List.tl lst) (buffer + ((List.hd lst).ToString()))
inner lst ""
Si tratta di un modello comune Continuo a imbattersi in F #, ho bisogno di avere una funzione interna che si recurses su un certo valore - e ho bisogno di questa funzione solo una volta, c'è in ogni modo possibile chiamare un lambda da sé (qualche parola chiave magica o qualcosa del genere)? Vorrei il codice per essere simile a questa:
let listToString2 (lst:list<'a>) = ;;' prettify fix
(fun
(lst:list<'a>) buffer -> match List.length lst with ;;' prettify fix
| 0 -> buffer
| _ -> ##RECURSE## (List.tl lst) (buffer + ((List.hd lst).ToString()))
) lst ""
Ma, come ci si potrebbe aspettare non c'è modo di fare riferimento alla funzione anonima in sé, che è necessaria dove ho messo ## RECURSE ##