haskell - opciones - ¿Por qué no puedo definir un nuevo tipo en ghci?
haskell simbolos (4)
Obtengo un error en ghci cuando intento definir un nuevo tipo:
Prelude> data Point = Pt Int Int <interactive>:1:0: parse error on input `data'' Prelude> let data Point = Pt Int Int <interactive>:1:4: parse error on input `data''
¿Qué estoy haciendo mal?
Solo como referencia histórica, el entorno interactivo HBI Haskell permite Haskell completo en la línea de comando, incluidos tipos, clases, etc. No hay un GHCi a priori que no pueda funcionar de manera similar, y los usuarios podrían escribir un front-end para GHC-API que sea compatible con esto ...
ghci no le permite definir tipos de entrada interactiva; en su lugar, debe poner su definición de tipo en un archivo y :load
el archivo en ghci.
titaniumdecoy
, recuerdo haber sido ayudado con este tipo de misterio GHCi cuando aprendí el hecho frecuente de que escribir cosas como ''let square x = x * x'' dentro del GHCi es como escribir let a = fb
con notación do
en la món IO
- - decir en este tipo de ejemplo:
palindromize :: IO ()
palindromize = do
a <- readFile "foo.txt"
let b = reverse a
putStrLn (a ++ b)
Del mismo modo, cuando redefine una expresión en el GHCi, es como hacer lo siguiente en la notación de do
, lo cual es perfectamente legítimo:
makeMess :: IO ()
makeMess = do
a <- readFile "foo.txt"
let b = reverse a
putStrLn (a ++ b)
let b = a
putStrLn (a ++ b)
Nadie declararía un tipo de datos en el medio de dicha secuencia, pero lo haría en otro lugar del módulo. Podría haber adivinado que había algún tipo de objeción teórica, pero la observación de Don S. sugiere que no hay ninguna.