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

    [Haskell] Tipo di una funzione

    Sinceramente non so se in questo forum esiste qualcuno che abbia mai programmato in Haskell, ma ci provo ugualmente.

    Non riesco a capire perchè a questa funzione:

    multxyz = x∗y∗z

    è associato questo tipo:

    mult :: Int -> (Int -> (Int -> Int))

    quando nella descrizione sul libro di Haskell dice che questa funzione non fa altro che fare il prodotto di quei tre numeri acquisendo i numeri uno ad uno.

    Cioè matematicamente non dovrebbe essere un dominio del tipo INTxINTxINT -> INT ? perchè Haskell lo descrive in quella forma strana li?

    Vi ringrazio in anticipo per qualsiasi aiuto,
    Neptune.
    "Estremamente originale e fantasioso" By darkiko;
    "allora sfiga crepuscolare mi sa che e' meglio di atmosfera serale" By NyXo;
    "per favore, già è difficile con lui" By fcaldera;
    "se lo apri te e invece di "amore" ci metti "lavoro", l'effetto è lo stesso" By fred84

  2. #2
    Utente di HTML.it L'avatar di toraz
    Registrato dal
    Nov 2001
    Messaggi
    263

    Re: [Haskell] Tipo di una funzione

    Originariamente inviato da Neptune
    perchè Haskell lo descrive in quella forma strana li?
    Currying.

  3. #3

    Re: Re: [Haskell] Tipo di una funzione

    Originariamente inviato da toraz
    Currying.
    Cioè detto in pratica significa prendo 3 int e restituisco un int, che poi dice che è un forma "non molto corretta" però alla fine dei giochi è quello che fa, o no?

    E si dovrebbe leggere tutto da sinistra verso destra, no?

    Cioè se ho: int -> int -> int -> float

    Significa che prendo 3 int e ritorno un float? Perchè dirlo in questa maniera è scorretto non lo capisco bene però.
    "Estremamente originale e fantasioso" By darkiko;
    "allora sfiga crepuscolare mi sa che e' meglio di atmosfera serale" By NyXo;
    "per favore, già è difficile con lui" By fcaldera;
    "se lo apri te e invece di "amore" ci metti "lavoro", l'effetto è lo stesso" By fred84

  4. #4
    Utente di HTML.it L'avatar di toraz
    Registrato dal
    Nov 2001
    Messaggi
    263
    Originariamente inviato da Neptune
    Cioè detto in pratica significa prendo 3 int e restituisco un int, che poi dice che è un forma "non molto corretta" però alla fine dei giochi è quello che fa, o no?
    Non esattamente, se no non direbbe che non e` molto corretta.
    Per essere precisi il tipo di una funzione andrebbe letto come lo hai scritto nel primo post, cioe`

    codice:
    Int -> ( Int -> (Int -> Float ))
    ovvero una funzione che prende un solo parametro di tipo Int e restituisce una funzione di tipo Int -> (Int -> Float) che a sua volta e` una funzione che prende un parametro e restituisce una funzione di tipo Int -> Float.

    Tutta questa roba serve per poter "partially apply" (scusami ma non mi viene i italiano... applicare parzialmente si dice?!?) una funzione.

  5. #5
    Originariamente inviato da toraz
    Non esattamente, se no non direbbe che non e` molto corretta.
    Per essere precisi il tipo di una funzione andrebbe letto come lo hai scritto nel primo post, cioe`

    codice:
    Int -> ( Int -> (Int -> Float ))
    ovvero una funzione che prende un solo parametro di tipo Int e restituisce una funzione di tipo Int -> (Int -> Float) che a sua volta e` una funzione che prende un parametro e restituisce una funzione di tipo Int -> Float.

    Tutta questa roba serve per poter "partially apply" (scusami ma non mi viene i italiano... applicare parzialmente si dice?!?) una funzione.
    Nel senso che, se do il primo Int, ma poi non do il secondo, allora mi si ritorna in uscità una "funzione non computata" anzichè il risultato della computazione?

    Cioè se io ho quella funzione del tipo A*B*C e fornisco solo A=5 l'interprete cosa mi restituisce? 5*B*C? e non mi da errore quindi?

    Altra domanda, vedevo che per windows c'era un comodo ambientino da 14 mb, per MacOS mi ha già fatto scaricare un ambiente di sviluppo da 140 e passa mega e manco si fa installare perchè non ho XCode. Ma non esiste qualche ambientino pratico e veloce anche per macOs? tanto per quei piccoli programmini che andrò a fare..

    Anche perchè mi servirebbe un ambiente il più possibile uguale a quello di windows per non trovarmi poi spiazzato durante l'esame di laboratorio. Se non c'è mi toccherà emulare windows per far andare l'emulatore
    "Estremamente originale e fantasioso" By darkiko;
    "allora sfiga crepuscolare mi sa che e' meglio di atmosfera serale" By NyXo;
    "per favore, già è difficile con lui" By fcaldera;
    "se lo apri te e invece di "amore" ci metti "lavoro", l'effetto è lo stesso" By fred84

  6. #6
    Utente di HTML.it L'avatar di toraz
    Registrato dal
    Nov 2001
    Messaggi
    263
    Originariamente inviato da Neptune
    Nel senso che, se do il primo Int, ma poi non do il secondo, allora mi si ritorna in uscità una "funzione non computata" anzichè il risultato della computazione?

    Cioè se io ho quella funzione del tipo A*B*C e fornisco solo A=5 l'interprete cosa mi restituisce? 5*B*C? e non mi da errore quindi?
    Grosso modo l'idea e` quella. I link che ho postato spiegano la questione abbastanza bene.


    Altra domanda, vedevo che per windows c'era un comodo ambientino da 14 mb, per MacOS mi ha già fatto scaricare un ambiente di sviluppo da 140 e passa mega e manco si fa installare perchè non ho XCode. Ma non esiste qualche ambientino pratico e veloce anche per macOs? tanto per quei piccoli programmini che andrò a fare..

    Anche perchè mi servirebbe un ambiente il più possibile uguale a quello di windows per non trovarmi poi spiazzato durante l'esame di laboratorio. Se non c'è mi toccherà emulare windows per far andare l'emulatore
    Immagino che l'ambientino sia Hugs, nel caso c'e` anche per MacOS .

  7. #7
    Originariamente inviato da toraz
    Grosso modo l'idea e` quella. I link che ho postato spiegano la questione abbastanza bene.



    Immagino che l'ambientino sia Hugs, nel caso c'e` anche per MacOS .
    Si mi serve HUGS per MacOs (e non tutto quel casino di ambiente con Xcode ecc ecc), ma non lo riesco a scaricare nè dal sito di Haskell nè dal sito che mi hai dato tu. Non è che potrsti linkarmi direttamente il file da scaricare? ci sto impazzendo, altrimenti mi tocca falro girare su windows virtualizzato ed è una bella rottura.
    "Estremamente originale e fantasioso" By darkiko;
    "allora sfiga crepuscolare mi sa che e' meglio di atmosfera serale" By NyXo;
    "per favore, già è difficile con lui" By fcaldera;
    "se lo apri te e invece di "amore" ci metti "lavoro", l'effetto è lo stesso" By fred84

  8. #8
    Utente di HTML.it L'avatar di toraz
    Registrato dal
    Nov 2001
    Messaggi
    263
    Non credo ci sia un link diretto da darti. Per quanto ne so di Mac OS i Macports sono un sistema tipo ports di BSD. Immagino che dovrai installare tutto l'albero dei pacchetti e poi compilare quello che ti serve. In alternativa puoi compilarlo a manella, i sorgenti li trovi su http://www.haskell.org/hugs/. Non dovrebbe avere troppe dipendenze.

    Comunque sia, l'ambiente incasinato e` la Haskell Platform?

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 © 2024 vBulletin Solutions, Inc. All rights reserved.