Vlákno názorů k článku Programovací jazyk F#: proměnné, funkce a datové typy od johny - V F# nie je zvykom písať Printf.printf, to...

  • Článek je starý, nové názory již nelze přidávat.
  • 14. 9. 2023 10:10

    johny

    V F# nie je zvykom písať Printf.printf, to je asi OCaml zlozvyk. :) Module Printf je priamo dostupný v programoch. Modul obsahuje širokú škálu print funkcií. V posledných dvoch verziách F# boli pridané bohaté možnosti interpolácie reťazcov. (To bolo dovtedy zvláštne opomenutie.) Medzi najčastejšie používanými je zrejme funkcia printfn.

    let msg = "an old falcon"
    printf "%s\n" msg
    printfn "%s" msg
    
    let n = 32
    eprintfn $"error message {n}"
    
    let name = "Jone Doe"
    let age = 34
    printfn $"{name} is {age} years old"
    
    let res = sprintf "Write five = %d and six = %d" (3+2) (3+3)
    printfn "%s" res
    
    let name2 = "Roger Roe"
    let age2 = 30
    
    printfn $"""Name: %s{name2}, Age: %d{age2}"""

    Dlho mi nešlo do hlavy, prečo nie je dostupná funkcia, ktorá bez všetkého vypíše premennú, podobne ako print v Pythone. Autori zrejme predpokladajú použitie .NET metódy Console.Write­Line.

    Poznámka k špecifikátoru %A.

    let data = [0..4]
    let output = $"The data is %A{data}"

    Ten sa využíva na diagnostické vypísanie ľubovoľnej hodnoty, hlavne tých komplexnejších.

    Pre pochopenie Unit typu. Toto je hodnota, nie funkcia:

    let hello =
        printfn "Hello there"

    Toto je funkcia:

    let hello () =
        printfn "Hello there"

    Funkcie musia z definície niečo vracať.

    Poznámka k recordom. Pokiaľ je každý field na samostatnom riadku, tak je bodkočiarka voliteľná. Ionide automaticky takto formátuje.

    Na rozdiel od jazykov, ktoré sa умудрили pridať recordy len v poslednej dobe, F# ich má od začiatku s využitým jednoduchej, priamočiarej syntaxe. Recordy považujem za základnú nevyhnutnosť pre programovacie jazyky, ktoré chcú ašpirovať na dátovú analýzu.

    14. 9. 2023, 10:14 editováno autorem komentáře

  • 14. 9. 2023 20:30

    Calculon

    Technicky je “hodnota” taky funkce, akorát nulární. Ten trik s unit typem se používá v eager jazycích (což je většina). Některé ale umí volitelně lazy vyhodnocování (Idris nebo Lean k tomu mají podporu v runtimu).