/ / Haskell печатащи низове stdout - haskell, output, user-input

Хакел печат низове stdout - haskell, изход, потребителски вход

Трябва да отпечатвам елементите в един комплект. В момента изходът на моя код е следният:

"a"
"ab"
"b"
"x"
"xy"
"xyz"
"xz"
"y"
"yz"
"z"

Въпреки това, трябва изходът да не съдържа кавички, като този:

a
ab
b
x
xy
xyz
xz
y
yz
z

Това е, което имам. Как мога да го поправя, за да получи правилния изход?

import Data.List
powerset = foldr (x acc -> acc ++ map (x:) acc) [[]]

main = do
numCases <- getLine
repl $ (read numCases :: Int)

repl num = do
if(num == 0) then return ()
else do
size <- getLine
input <- getLine
let ret = tail $ sort $ powerset input
mapM (x -> print x) ret
repl $ num-1

Отговори:

6 за отговор № 1

първи (x -> f x) е равностойна на обикновена f (в почти всички случаи) чрез ета-редукция. Така че можете да пренапишете mapM (x -> print x) като mapM print.

За да премахнете кавичките, трябва да използвате функцията putStrLn вместо print функция. Кавичките в print идвам от print = putStrLn . show. show е функция, която отпечатва стойности по начин, който може (ако е определен подходящ екземпляр) да бъде прочетен отново с read, По този начин, кавички на низове, които не искате (или имате нужда) за вашия случай на употреба.