Чтобы расширить сказанное Полом Джонсоном, вам нужно определить тип данных для данных, которые вы пытаетесь сохранить.
data MusicFile = MusicFile {music :: String,
size :: Integer,
artist :: String}
deriving Show
musicFileFromStrings :: [String] -> MusicFile
musicFileFromStrings [sMusic, sSize, sArtist]
= MusicFile sMusic (read sSize) sArtist
Тогда, если у вас есть
list = [["a","123","b"],["h","435","t"],["w","234","j"]]
, выможет сказать
anotherList = map musicFileFromStrings list
, а затем
map music anotherList -- ["a", "h", "w"]
map artist anotherList -- ["b", "t", "j"]
(РЕДАКТИРОВАТЬ)
Если вы хотите отсортировать список по определенному полю, вы можете использовать «sortBy» и « сравнение".
import Data.List
import Data.Ord
sizeOrderList = sortBy (comparing size) anotherList
Функция" сравнения "превращает функцию по значению (в данном случае" размер ") в функцию сравнения между двумя значениями.Единственное требование состоит в том, чтобы вывод «size» (в данном случае) был типом, который является экземпляром «Ord».
Если вы хотите убывать, используйте
sizeOrderList = sortBy (comparing (flip size)) anotherList