Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [F#] richiamare funzioni

    salve a tutti, ahimè mi è toccato cimentarmi con f# (per passare esami universitari questo e altro ) solo che ho un problema abbastanza pesante di cui non riesco a trovare una risposta sull'msdn o anche sui libri di testo (sarò cieco io, boh), non riesco a richiamare le funzioni per stampare su schermo.
    ad esempio, programma abbastanza stupido

    Codice PHP:
        let sumtofun sum n ->
            
    if n>0 then n sum(n-1) else 0

    printfn 
    "%d" (sumto(10)) 
    mi dà errore nel richiamo di sumto scrivendo
    Il tipo '(int -> int)' non è compatibile con alcuno dei tipi byte,int16,int32,int64,sbyte,uint16,uint32,uint64, nativeint,unativeint, derivanti dall'utilizzo di una stringa di formato printf-style

    e stessa cosa anche per altri esercizi. se qualcuno è così gentile da aiutarmi perché ne sto uscendo matto gliene sarei 30 volte grato

  2. #2
    proprio niente niente??? pensavo fosse anche una cosa semplice e invece pare proprio che non lo sia

  3. #3
    Moderatore di Windows e software L'avatar di URANIO
    Registrato dal
    Dec 1999
    residenza
    Casalpusterlengo (LO)
    Messaggi
    1,289
    Ho provato velocemente con F# online ed è proprio sbagliata la funzione.

    Non so se funziona cmq ma a logica dovrebbe essere
    codice:
    let sumto= fun n -> if n>0 then n + sumto(n-1) else 0
    La mia conoscenza di F# si limita a 2 secondi di google oggi.

  4. #4
    grazie per lo sforzo ma la funzione messa come dici te visual studio me la segna scorretta in quanto non trova sumto quando avviene la chiamata ricorsiva

  5. #5
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    codice:
    let rec sumto n = if n>0 then n + sumto (n-1) else 0
    
    printfn "%d" (sumto 10)
    Premetto che non sconosco F#, ma OCaml...

    In ogni caso la sintassi per le funzioni non utilizza le parentesi per vari motivi...
    Primo fa tutti una funzione che prende n argomenti non è in realtà una funzione che prende n argomenti, ma una funzione che prende 1 argomento che ritorna una funzione che prende 1 argomento e così via n volte...

    ad esempio puoi scrivere:

    codice:
    let mul x y = x * y
    let dub = mul 2
    let triple =mul 3
    proprio grazie a questa proprietà...
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  6. #6
    grazie, funziona

  7. #7
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    Prego...
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.