Articles of haskell

Perché i valori polimorfici non vengono dedotti in Haskell?

I letterali numerici hanno un tipo polimorfico: *Main> :t 3 3 :: (Num t) => t Ma se lego una variabile a un tale letterale, il polimorfismo si perde: x = 3 … *Main> :tx x :: Integer Se definisco una funzione, d’altra parte, è naturalmente polimorfica: fx = 3 … *Main> :tf f :: […]

Importa esplicitamente le istanze

Come imposto esplicitamente le istanze di typeclass? Inoltre, come posso fare questo con un’importazione qualificata? Attualmente, sto facendo import Control.Monad.Error () per importare l’istanza monad che posso usare per (Either String) . In precedenza, ho usato import Control.Monad.Error Non sono soddisfatto di nessuno dei due, perché l’istanza Monad è importata implicitamente.

Scala: come definire i parametri di funzione “generici”?

Sto cercando di imparare Scala adesso, con un po ‘di esperienza in Haskell. Una cosa che mi è sembrata strana è che tutti i parametri di funzione in Scala devono essere annotati con un tipo, qualcosa che Haskell non richiede. Perchè è questo? Per provare a metterlo come un esempio più concreto: una funzione di […]

Cosa significa il punto esclamativo in una dichiarazione Haskell?

Ho trovato la seguente definizione nel tentativo di imparare Haskell usando un vero progetto per guidarlo. Non capisco cosa significhi il punto esclamativo di fronte a ogni argomento e i miei libri non sembrano menzionarlo. data MidiMessage = MidiMessage !Int !MidiMessage

Idiomi della composizione della funzione Haskell (.) E della funzione ($): uso corretto

Ho letto Real World Haskell , e mi sto avvicinando alla fine, ma una questione di stile mi è venuta meno con gli operatori (.) E ($) . Quando scrivi una funzione che è una composizione di altre funzioni, la scrivi come: f = g . h Ma quando applichi qualcosa alla fine di quelle […]

Qual è lo scopo di Rank2Types?

Non sono molto abile in Haskell, quindi questa potrebbe essere una domanda molto facile. Quali limitazioni linguistiche risolvono Rank2Types ? Le funzioni in Haskell non supportano già argomenti polimorfici?

Come raggruppare oggetti simili in un elenco usando Haskell?

Dato un elenco di tuple come questa: dic = [(1,”aa”),(1,”cc”),(2,”aa”),(3,”ff”),(3,”gg”),(1,”bb”)] Come raggruppare elementi di dic risultanti in un elenco in cui, grp = [(1,[“aa”,”bb”,”cc”]), (2, [“aa”]), (3, [“ff”,”gg”])] In realtà sono un nuovo arrivato per Haskell … e sembra esserne innamorato .. Utilizzando il gruppo o il gruppo in DataList verranno raggruppati solo oggetti adiacenti […]

Comprensione finita di una lista infinita

Ho digitato quanto segue in ghci, pensando che una delle due cose accadrebbe: 1) L’interprete si bloccherebbe, cercando in ogni membro di una lista infinita le corrispondenze con un predicato; o 2) attraverso il dietro le quinte Haskell jujitsu, l’interprete avrebbe in qualche modo capito che la sequenza termina alle 4 e si ferma lì. […]

Una funzione Haskell di tipo: IO String-> String

Ho scritto un mucchio di codice in Haskell per creare un indice di un testo. La funzione top si presenta così: index :: String -> [(String, [Integer])] index a = […] Ora voglio dare a questa funzione una stringa letta da un file: index readFile “input.txt” Quale non funzionerà perché readFile è di tipo FilePath […]

Cosa c’è di male in Lazy I / O?

In generale ho sentito che il codice di produzione dovrebbe evitare di usare Lazy I / O. La mia domanda è, perché? È mai OK usare Lazy I / O al di fuori del semplice giocherellando? E cosa rende migliori le alternative (ad esempio gli enumeratori)?