2015-10-15 3 views
3

У меня есть этот код, а вместо него распечатывается «\ n», я хочу, чтобы он помещал следующую строку в новую строку, но не может показаться, что это выясняется. Любые указатели?Haskell пишет ' n' вместо новой строки

onSeparateLines :: [String] -> String 
onSeparateLines [] = "" 
onSeparateLines (x:[]) = x 
onSeparateLines (x:xs) = x ++ "\n" ++ onSeparateLines xs 

что я получаю

"AAAA\nAAAA" 

, которые должны быть:

"AAAA" 
"AAAA" 
+3

Я не уверен, почему это было приостановлено. Мы не забрасываем людей только потому, что они не понимают их проблемы, не так ли? В конце концов, если бы они поняли это, тогда они решили бы это самостоятельно. –

+0

@ReinHenrichs Ты совершенно прав. Я подозреваю, что это орфографическая вещь. Я исправлю заголовок и добавлю несколько тегов. – AJFarmar

+0

@ReinHenrichs Downvote также для бесполезных вопросов. Я нахожу этот вопрос немного пограничным (поэтому я не делаю его вниз, но я его не выдвигаю). – Bakuriu

ответ

9

Данная функция и использование вами "\ п" являются правильными, поэтому ошибка должна быть в другом месте. Не зная деталей, я подозреваю, что вы используете (эквивалент) print, а не putStr, чтобы напечатать свою строку. Перед печатью убедитесь, что ваша строка не является show n.

Если это в GHCi, имейте в виду, что значения печатаются с использованием print, так

> onSeparateLines ["foo", "bar"] 

будет print строка и шоу экранированные символы. Вы хотите

> putStrLn (onSeparateLines ["foo", "bar"]) 

вместо этого.

+0

да, что работает в терминале, но мне нужно, чтобы он выполнял его внутри функции, поэтому все, что я набираю, это> onSeparateLines', дающее '' foo "и на следующей строке" bar " – symon

+1

Я не знаю, что вы говорите. Что означает «Мне нужно сделать это внутри функции»? Вы не можете применять 'onSeparateLines' к чему-либо, кроме списка строк. Вы должны использовать синтаксис Haskell в GHCi, чтобы вы не могли буквально ввести 'onSeparateLines 'foo" "bar" '. –

+0

функция selfSeparateLines должна работать, набрав '> onSeparateLines [" foo "," bar "]' и ничего больше. Затем возвращаем '>" foo "' и в строке под '" bar ", поэтому проблема в моем коде, я думаю. Я попытался поставить функцию putStr внутри функции onSeparateLines, но он просто не работает. – symon

Смежные вопросы