#list #haskell
#Список #haskell
Вопрос:
эй, я размышлял, возможно ли отобразить список:
["one", "two", "three"]
будет отображаться как
"one", "two", "three"
нужно ли это сделать для файла
Спасибо
Ответ №1:
Вы можете сделать это с помощью intercalate
из Data.List
showList :: Show a => [a] -> String
showList = intercalate ", " . map show
map show
Преобразует каждый элемент в его строковое представление с кавычками (и все внутренние кавычки правильно экранированы), в то время как intercalate ", "
вставляет запятые и пробелы между частями и склеивает их вместе.
Комментарии:
1. @Tom: Именно так интерпретатор показывает вам результирующую строку. Попробуйте вместо этого использовать
putStrLn (showList ["one", "two", "three"])
для его печати. Для сравнения посмотрите разницу между простым вводом"hello"
иputStrLn "hello"
.2.@nanothief: Здесь предполагается использование
show
для создания внутренних кавычек. Путаница возникает из-за того, что интерпретаторshow
снова обращается к результату для его отображения.3. Да, вы правы, я недостаточно внимательно прочитал его требования. Это были мои комментарии, которые были неправильными: S (я удалил их, поскольку они ничего не сделают, кроме путаницы).