отображать список по-другому на Haskell?

#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 (я удалил их, поскольку они ничего не сделают, кроме путаницы).