Трябва да отпечатвам елементите в един комплект. В момента изходът на моя код е следният:
"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
, По този начин, кавички на низове, които не искате (или имате нужда) за вашия случай на употреба.