2015-05-20 2 views
1

У меня есть функция, которая возвращает список, назовите его f n.Вывод списка в Haskell без скобок и в диапазоне?

Если я распечатаю список, он выглядит как [1,2,3,4], тогда как я хочу, чтобы он выглядел как 1 2 3 4.

Также я хочу выводить множество списков в диапазоне n, так f 1 на первой линии, f 2 на второй линии, ... f n на п-й линии.

У меня есть функция f n, но я не могу получить выход для работы для меня.

Текущая попытка:

main = do 
    n <- readLn :: IO Int 
    mapM_ putStrLn [f i | i <- [1..n]] 

ответ

7

Вы можете сделать что-то вроде

list_to_string = unwords . map show 

, чтобы получить выходной формат, который вы хотите. Тогда вместо того, чтобы делать

print [1, 2, 3, 4] 

вы можете сделать

putStrLn $ list_to_string $ [1, 2, 3, 4] 

, который должен отображаться, как вы хотите.

Edit: Что касается печати диапазона, попробуйте следующее:

main = do 
    n <- readLn :: IO Int 
    mapM_ (putStrLn . list_to_string) [ f i | i <- [1..n] ] 
+0

насчет вывода F N в диапазоне? –

+0

Я не уверен, что понимаю эту часть вашего вопроса. Вы говорите, что 'f' принимает число и возвращает список чисел? – MathematicalOrchid

+0

Да, это правильно –

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