Задать вопрос
@President42

Почему не работает head со строками в Haskell?

import Data.List

main :: IO()
main = do
    word <- getLine
    putStrLn(head word)


$ ghc Main.hs
[1 of 1] Compiling Main             ( Main.hs, Main.o )

Main.hs:6:19:
    Couldn't match type `Char' with `[Char]'
    Expected type: [String]
      Actual type: String
    In the first argument of `head', namely `word'
    In the first argument of `putStrLn', namely `(head word)'
    In a stmt of a 'do' block: putStrLn (head word)


Компилятор GHC 7.6.3, ОС Debian Jessie

P. S. Здесь написано, что функция head должна принимать массив элементов любого типа (head :: [a] -> a), а ведь строка считается массивом [Char], разве нет?

P. P. S. В REPL (ghci) всё работает
  • Вопрос задан
  • 325 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Python-разработчик
    10 месяцев
    Далее
  • Skillfactory
    DevOps-инженер
    6 месяцев
    Далее
  • Нетология
    Python-разработчик с нуля
    6 месяцев
    Далее
Решения вопроса 1
@Lol4t0
putStrLn умеет печатать только строки
Prelude> :t putStrLn
putStrLn :: String -> IO ()

А head word возвращает символ
Нужно переделать его в строку, например
putStrLn . show $ head word
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Воронеж
от 50 000 до 90 000 ₽
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽