Я новичок в haskell, и я хочу отсортировать список строк. Например, у меня есть список, который находится в моей переменной ff
, которые содержат три строки ["1 8 8 5 6", "1 4 2 3", "5 4 9 7 9 9"]
, и я хочу, чтобы отсортировать их, чтобы мой результат должен выглядеть ["1 5 6 8 8", "1 2 3 4", "4 5 7 9 9 9"]
Вот мой код, который отлично работаетHaskell сортировать значения из списка
import System.IO
import Control.Monad
import Data.List
import Data.Function
import Data.Array
import Data.Char
sortNumeric = sortBy (compare `on` (read :: String -> Int))
wordsWhen :: (Char -> Bool) -> String -> [String]
wordsWhen p s = case dropWhile p s of
"" -> []
s' -> w : wordsWhen p s''
where (w, s'') = break p s'
main = do
file <- readFile "test.txt"
let ff = map ((!!) (lines file)) [1,3..(length (lines file) - 1)]
let splitString = wordsWhen (==' ') (ff!!0)
let sortedResult = sortNumeric (splitString)
print sortedResult
проблемы с этой линией let splitString = wordsWhen (==' ') (ff!!0)
I всегда получают первый элемент списка, поэтому сортируется только первый элемент. Как передать все значения списка? Вот что я пытался сделать let splitString = wordsWhen (==' ') (ff!![0..(length(ff)-1)])
, к сожалению, это не работает. Любые идеи, как решить эту проблему?
Спасибо за ваш ответ, но что 'Prelude' после его реализации в моем коде я не в области: конструктор данных 'Prelute' – David
' Prelude> '- это просто приглашение от интерактивного интерпретатора, а не часть кода. – chepner
Привет, Дэйв, извините, если часть 'Prelude>' была запутанной, я просто быстро ее написал в 'ghci' и скопировал с терминала. – vikingsteve