OCaml – intro cont.

Continuo l’esame di OCaml, iniziato qui. Mi ero perso su una cosa che dovrebbe essere banale ma un po’ quirkosa, imho. Poi, magari, scoprirò che è logico e naturale e giusto che sia così; per intanto eccola:


l’uso delle parentesi per il cast a 3 a volte sono necessarie, a volte no. Finchè si prova con l’interprete non ci sono problemi ma nelle condizioni reali ciò potrebbe essere fastidioso.


sembrerebbe che le parentesi per il cast ci vogliano sempre.

Mentre ci sono i tipi base sono i seguenti

 OCaml type     Range

int            31-bit signed int (roughly +/- 1 billion) on 32-bit processors,
               or 63-bit signed int on 64-bit processors
float          IEEE double-precision floating point, equivalent to C's double
bool           A boolean, written either true or false
char           An 8-bit character
string         A string
unit           Written as ()

dove unit equivale al void del C.

Tutta questa cura sul controllo dei tipi non impedisce di avere funzioni polimorfe: la differenza sta in un apice 8)

ma ecco

cosmico! direbbe il prof. Fontecedro, fa tutto lui. E ce lo dice quando definiamo la funzione, così:

val dammi5 : 'a -> int = <fun>

indicando ‘a. Nel caso di definizione di media si aveva

val media : float -> float -> float = <fun>

niente apici e tipi ben definiti 8)

A questo punto il tutorial diventa molto simile alla Guida Galattica, riporto copincollando perché troppo bello:

Dunque l’argomento di questo tutorial è che i linguaggi funzionali hanno molte Caratteristiche Veramente Fiche, e che OCaml è un linguaggio che ha tutte queste Cratteristiche Veramente Fiche infilate dentro insieme, il che lo rende dunque un linguaggio molto pratico da usare per veri programmatori. Ma la cosa strana è che la maggior parte di queste caratteristiche fiche non hanno proprio nulla a che fare con la “programmazione funzionale”. Difatti, sono giunto alla prima Caratteristica Veramente Fica, e non ho ancora parlato del perché la programmazione funzionale è chiamata “funzionale”. Ad ogni modo, ecco la prima Caratteristica Veramente Fica: l’inferenza dei tipi.

OK, OCaml gestisce lui i tipi, tranne casi particolari che solo alcuni ne hanno bisogno (diffidatene, come dei programmatori muniti di cacciavite).
Ecco io sono arrivato alla fine della pagina The Basics. (Esiste anche in italiano, l’abitudine…). E mi sto ponendo una domanda: conviene che continui a raccontare queste cose che sono un riassunto di cose presenti sul Web, fatte molto bene (stessa qualità della Guida Galattica, l’ho già detto)? Diciamo che per ora mi fermo qui, ci penso su e prossimamente… 8)

Poi ho dei dubbi su post molto corti come l’attuale. In questo periodo sono piuttosto preso da mille cose, forse ci saranno meno post miei. Anche perché odio quelli con solo fuffa per far vedere che ci sono 😦

Posta un commento o usa questo indirizzo per il trackback.

Commenti

  • Mattux  Il 20 ottobre 2011 alle 15:16

    Questi post io li trovo molto interessanti, secondo me devi continuare 🙂

    Sulla frequenza non devi preoccuparti, scrivi quando hai tempo e voglia 🙂

    • juhan  Il 20 ottobre 2011 alle 15:19

      Grazie per l’incoraggiamento. Continuerò, tempo permettendo 😉 per esempio adesso dovrei fare altro 8)

  • piergiu  Il 20 ottobre 2011 alle 23:27

    bello bello! forza juhan!
    la questione delle parentesi è (mi pare di ricordare vagamente, cioè leggi “la butto lì”) riguarda il fatto dell’associazione a destra degli argomenti. cioè la funzione media aspetta due float, perchè ha inferito (o infierito) così dalle operazioni che definiscono la funzione stessa. quindi va bene

    media 3 5;;

    che possiamo considerare come in C una cosa tipo

    media(3,5);

    mentre invece,

    media float 3 5;;

    caml la interpreta come se fosse

    media(float, 3)

    con un 5 ‘appeso’ ma che in realtà viene dato in pasto anche esso a media, difatti sottolinea media come funzione che ha causato l’errore.

    diverso è un’altro tipo di errore, che riguarda il passare argomenti sbagliati, della serie che io passo

    media float 3;;

    cioè passo una funzione e un intero, ma mi direbbe inizialmente un errore (sottolineando quindi float) perchè il tipo di float non è int come atteso , ma un tipo int->float , ovvero in matematichese, una funzione che va dal dominio degli interi e arriva al dominio dei float.

    nsomma, un casotto. mi son permesso di fare uno scrinsciot!
    qui > http://imageshack.us/photo/my-images/254/catturaea.png/

    aspetto di leggere i commenti di quando introdurrai le funzioni di ordine superiore: stupefacenti, IMHO! 😀

    • juhan  Il 21 ottobre 2011 alle 07:19

      Giustissimo! mystero risolto 😀

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: