что такое ошибка разбора: голое выражение на верхнем уровне? - PullRequest
2 голосов
/ 02 июня 2011

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

Например, вложенный список [[1],[1,2],[4..5]] должен дать мне [1,2].

Я могу сделать это в интерактивном режиме по nub (map length [[1],[1,2],[4..5]]).Но если я напишу файл со следующим кодом:

Import Data.List
getLen :: [[a]] ->[Int]
getLen xs = nub (map length xs)

Я получу сообщение об ошибке:

"Ошибка разбора: голое выражение на верхнем уровне"

Что означает эта ошибка и как я могу это исправить?

Ответы [ 2 ]

9 голосов
/ 02 июня 2011

Простое изменение: это import, а не Import.

2 голосов
/ 02 июня 2011

В анализаторе Import Data.List выглядит как приложение конструктора данных Import с конструктором данных Data.List в качестве аргумента.

Поскольку эта ошибка произошла во время синтаксического анализа, компилятор еще не выяснил, что ни один из конструкторов данных Import или Data.List на самом деле не существует, но он знает, что подобное выражение не разрешено на верхнем уровне.

Конечно, в этом случае это была просто опечатка, как указывал @augustss.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...