Articles of hashell

Come funziona la monade ST?

Capisco che la monade ST è qualcosa come un piccolo fratello di IO, che a sua volta è la monade di stato con l’aggiunta della magia RealWorld . Posso immaginare gli stati e posso immaginare che il RealWorld sia in qualche modo inserito nell’IO, ma ogni volta che scrivo un tipo di firma di ST […]

Monade con Join () invece di Bind ()

Le Monadi vengono di solito spiegate in return di return e bind . Tuttavia, ritengo che sia ansible implementare il bind in termini di join (e fmap ?) Nei linguaggi di programmazione che mancano funzioni di prima class, il bind è estremamente atroce da usare. join , d’altra parte, sembra abbastanza facile. Non sono completamente […]

IO si verifica in modo non corretto quando si utilizza getLine e putStr

Sono un principiante Haskell, sto appena cominciando a girarmi intorno alla Monads, ma non lo capisco ancora. Sto scrivendo un gioco che consiste nel chiedere all’utente l’input e la risposta. Ecco una versione semplificata della mia funzione: getPoint :: IO Point getPoint = do putStr “Enter x: ” xStr <- getLine putStr "Enter y: " […]

Cosa è indicizzato monad?

Qual è la monade indicizzata e la motivazione per questa monade? Ho letto che aiuta a tenere traccia degli effetti collaterali. Ma la firma del tipo e la documentazione non mi portano da nessuna parte. Quale sarebbe un esempio di come può aiutare a tenere traccia degli effetti collaterali (o di qualsiasi altro esempio valido)?

Design su larga scala in Haskell?

Qual è un buon modo per progettare / strutturare programmi funzionali di grandi dimensioni, specialmente in Haskell? Ho passato un po ‘di tutorial (scrivimi uno Schema che è il mio preferito, con Real World Haskell un secondo vicino) – ma la maggior parte dei programmi sono relativamente piccoli e monouso. Inoltre, non ritengo che alcuni […]

Perché 3 e x (che è stato assegnato 3) hanno diversi tipi dedotti in Haskell?

L’inferenza del tipo in Haskell ha un po ‘una curva di apprendimento (per non dire altro!). Un buon modo per iniziare a impararlo è con semplici esempi. Quindi, il seguente è un po ‘un “mondo ciao” per l’inferenza di tipo. Considera il seguente esempio: Prelude> :t 3 3 :: (Num t) => t Prelude> let […]