Как решить проблемы при получении ошибки: Не входит в сферу действия

*Main> :t putStrn

<interactive>:1:1:
Not in scope: `putStrn'
Perhaps you meant one of these:  
  `putStr' (imported from Prelude),  
  `putStrLn' (imported from Prelude)

Обратите внимание, что я практикую программирование haskell в emacs с режимом haskell.

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

optimight@optimight:~$ ghci  
GHCi, version 7.4.1: http://www.haskell.org/ghc/  :? for help  
Loading package ghc-prim ... linking ... done. 
Loading package integer-gmp ... linking ... done.  
Loading package base ... linking ... done.  
Prelude> :set prompt ghci>  
ghci>:t putStrln   

<interactive>:1:1:  
    Not in scope: `putStrln'  
    Perhaps you meant one of these:  
      `putStrLn' (imported from Prelude),  
      `putStr' (imported from Prelude)

person Optimight    schedule 29.07.2012    source источник
comment
Вы уверены, что существует функция с именем putStrn?   -  person Pikaurd    schedule 29.07.2012
comment
@Pikaurd: Да, я использую после обращения к книге - Выучите Haskell навсегда - тему 9.1, где она написана Давайте исследуем, что мы написали. Сначала посмотрим на тип функции putStrLn. ghci ›: t putStrLn putStrLn :: String -› IO () ghci ›: t putStrLn привет, мир putStrLn привет, world :: IO ()   -  person Optimight    schedule 29.07.2012
comment
putStrn и putStrln - это разные имена, чем putStrLn.   -  person ephemient    schedule 29.07.2012


Ответы (1)


Действие ввода-вывода, которое вы ищете: putStrLn. Обратите внимание, что символы Haskell с заглавной буквы L чувствительны к регистру непосредственно перед последним n, так как они помещают строку в отдельную строку.

person Greg Bacon    schedule 29.07.2012