Почему я не могу определить новый тип в GHCI?

StackOverflow https://stackoverflow.com/questions/3126591

  •  30-09-2019
  •  | 
  •  

Вопрос

Я получаю ошибку в GHCI, когда пытаюсь определить новый тип:

Prelude> Точка данных = PT INT INTu003Cinteractive> : 1: 0: ошибка анализа на входных данных `Data 'Prelude> Пусть точка данных = pt int intu003Cinteractive> : 1: 4: ошибка разбора на входных данных «данные»

Что я делаю неправильно?

Это было полезно?

Решение

titaniumdecoy, Я помню, как быть помогли с такого рода тайной GHCI, когда я узнал часто сделал точку, что пишут такие вещи, как «пусть квадрат x = x * x» внутри GHCI, как написание let a = f b с участием do Обозначение в IO Монад - скажи в таком примере:

palindromize :: IO ()
palindromize = do
  a <- readFile "foo.txt"
  let b = reverse a
  putStrLn (a ++ b)

Точно так же, когда вы переопределите выражение в GHCI, это как можно сделать следующее в do Обозначение, которое совершенно законно:

makeMess :: IO ()
makeMess = do
   a <- readFile "foo.txt"
   let b = reverse a
   putStrLn (a ++ b)
   let b = a
   putStrLn (a ++ b)

Никто бы мог бы объявить тип данных В середине такой последовательности, но сделали бы это в других местах модуля. Я мог бы догадаться, что было какое-то теоретическое возражение, но замечание Дон С. предполагает, что нет ни одного.

Другие советы

Только для исторической справки, HBI Haskell Интерактивная среда Позволяет полный Haskell в командной строке, включая типы, классы и так далее. Нет никаких априори GHCI не может работать аналогично, и пользователи могли бы написать интерфейс для GHC-API, который поддерживал это ...

GHCI не позволяет вам определять типы от интерактивного ввода - вместо этого вам нужно поставить определение вашего типа в файл и :load файл в ghci.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top