Как я могу установить OverloadedStrings в записной книжке ihaskell? - PullRequest
0 голосов
/ 12 апреля 2019

Из примера ноутбука я понимаю, что я должен иметь возможность включать и отключать расширения следующим образом:

-- We can disable extensions. 
:ext NoEmptyDataDecls 
data Thing

<interactive>:1:1: error:
    • ‘Thing’ has no constructors (EmptyDataDecls permits this)
    • In the data declaration for ‘Thing’

-- And enable extensions.
:ext EmptyDataDecls
data Thing

Однако, когда я пытаюсь сделать это с OverloadedStrings, я не вижу никакого успеха. Ниже вы можете видеть, что T.lines ищет строку, а не текст. Почему?

enter image description here

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

1 Ответ

0 голосов
/ 25 апреля 2019

Хорошие новости: в блокноте выше перегруженные строки загружены правильно.Проблема в том, что вам нужно прочитать файл с:

T.readFile

Итак

main :: IO ()
main = do
  text <- T.readFile "./data.txt"
  print $ T.lines text

Это сбивает с толку, потому что ошибка выделена T.lines вместо readFile. Оказывается readFile не создает форму текстовых данных, которые автоматически преобразуются в формат, требуемый T.lines (он создает String, а не Text).Вы должны были знать, что существует совершенно другая функция для вызова, которая делает это.Система типов не будет преобразовывать эти строковые форматы для вас.Вы должны сделать это самостоятельно, вызвав функцию чтения файла, которая явно возвращает Text: здесь, T.readFile.

...