Haskell – 4 – elementi di Haskell – 4

Continuo da qui, copio qui, scrollare fino a “Writing Code”.

Scrivere codice
Now that we know about the basics, let’s define and test the functions we discussed above. For our demos, we are using Haskell for Mac, an integrated programming environment based on the Glasgow Haskell Compiler for Mac OS X. However, as an alternative, you can simply use the Glasgow Haskell Compiler’s command line interpreter in combination with any editor you like.

Ecco io sono con GHC per cui non seguo esattamente il tutorial. Uso un editor semplice –Gedit– e la REPL GHCi

Definire e valutare funzioni semplici
La mia versione, creo nell’editor il file esempio-1.hs con il codice:

inc :: Int -> Int
inc x = x + 1

double :: Int -> Int
double x = x * 2

In GHCi carico il file con :load, abbreviabile in :l:

Prelude> :load esempio-1
[1 of 1] Compiling Main             ( esempio-1.hs, interpreted )
Ok, 1 module loaded.
*Main> inc 5
6
*Main> inc 823543
823544
*Main> double 5
10
*Main> double 823543
1647086
*Main>

Siccome l’editor che uso non è integrato a Haskell non rileva immediatamente l’errore di battitura come capita nel video. Ecco cosa succede con il file esempio-2-err.hs:

exclaim :: String -> String
exclaim str = st ++ "!"

Nella REPL:

*Main> :l esempio-2-err
[1 of 1] Compiling Main             ( esempio-2-err.hs, interpreted )

esempio-2-err.hs:2:15: error:
    • Variable not in scope: st :: [Char]
    • Perhaps you meant one of these:
        ‘str’ (line 2), ‘fst’ (imported from Prelude)
  |
2 | exclaim str = st ++ "!"
  |               ^^
Failed, 0 modules loaded.

😁 GHCi se n’è accorto subito! 😁 correggo (file esempio-2-OK.hs)

exclaim :: String -> String
exclaim str = str ++ "!"

Nella REPL:

Prelude> :l esempio-2-OK
[1 of 1] Compiling Main             ( esempio-2-OK.hs, interpreted )
Ok, 1 module loaded.
*Main> exclaim "Bellissimissimo"
"Bellissimissimo!"
*Main> exclaim "Bellissimissimo Haskell"
"Bellissimissimo Haskell!"
*Main>

Nota: usare l’estensione .hs ma non indicarla con :load. E non mettere spazi e caratteri esotici nel nome del file.

Il video successivo “… using … GHCi” riporta à la Mac quanto ho descritto.

Ah! quasi dimenticavo: sì, la type signature funziona 😁

Pausa 😊

🤢

Posta un commento o usa questo indirizzo per il trackback.

Trackback

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo di WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google photo

Stai commentando usando il tuo account Google. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.

%d blogger hanno fatto clic su Mi Piace per questo: