titaniumdecoy
, Je me souviens d'avoir aidé avec ce genre de GHCi mystère quand j'ai appris que le fait souvent le point qui écrit des choses comme "laissez-carré x = x * x' à l'intérieur de la GHCi est comme la rédaction d' let a = f b
avec do
de la notation dans l' IO
monade -- dire dans ce genre d'exemple:
palindromize :: IO ()
palindromize = do
a <- readFile "foo.txt"
let b = reverse a
putStrLn (a ++ b)
De même, lorsque vous redéfinissez une expression dans le GHCi, c'est un peu comme faire ce qui suit, en do
de la notation, ce qui est parfaitement légitime:
makeMess :: IO ()
makeMess = do
a <- readFile "foo.txt"
let b = reverse a
putStrLn (a ++ b)
let b = a
putStrLn (a ++ b)
Personne n'aurait déclarer un type de données au moyen d'une telle séquence, mais le ferait-il d'ailleurs dans le module. J'ai peut-être deviné qu'il y avait une sorte d'objection théorique, mais Ne S. la remarque permet de croire qu'il n'en est pas une.