i seguenti controlli tipo di programma se a specificare sulla riga di comando (ad es ghci file.hs
):ghci - raccolta desiderosa in modalità interattiva?
import Data.Ratio
foo = let x = [1..]
y = (1%2) + (head x)
in y
Tuttavia, se entro in modo interattivo Prendo un errore di tipo:
Prelude> import Data.Ratio
Prelude Data.Ratio> let x = [1..]
Prelude Data.Ratio> let y = (1%2) + (head x)
<interactive>:1:23:
Couldn't match expected type `Ratio a0' with actual type `Integer'
E ' sembra che x
venga digitato impazientemente come [Integer]
rispetto al più generale (Num t, Enum t) => [t]
.
C'è qualcosa che posso fare al riguardo? Ci sono altre situazioni in cui la modalità interattiva sarà diversa dalla modalità batch?
restrizione monomorfismo ... – augustss
e digita moroso – Ptival
Infatti, è la restrizione monomorfismo temuta. Ci sono due modi per aggirarlo: dare una firma esplicita o disattivare questa restrizione (in GHCi, si può fare ': set -XNoMonomorphismRestriction' e il gioco è fatto, anche le istruzioni del linguaggio e i flag del compilatore funzionano. – Vitus