Haskell:
Робота з CSV

Як це зробити:

У Haskell робота з CSV-файлами можлива за допомогою бібліотеки cassava, однієї з популярних сторонніх бібліотек для цієї мети. Нижче наведено приклади, які демонструють, як читати з CSV-файлів і записувати в них, використовуючи cassava.

1. Читання з CSV-файлу:

Спершу переконайтеся, що у вас встановлено cassava, додавши її до файлу cabal вашого проекту або використовуючи Stack.

Ось простий приклад читання CSV-файлу та виведення кожного запису. Припускаємо, що у CSV-файлі є дві колонки: ім’я та вік.

{-# LANGUAGE OverloadedStrings #-}
import Data.Csv
import qualified Data.ByteString.Lazy as BL
import qualified Data.Vector as V

main :: IO ()
main = do
    csvData <- BL.readFile "people.csv"
    case decode NoHeader csvData of
        Left err -> putStrLn err
        Right v -> V.forM_ v $ \(name, age) ->
            putStrLn $ name ++ " має " ++ show (age :: Int) ++ " років."

Припустимо, people.csv містить:

John,30
Jane,25

Вивід буде:

John має 30 років.
Jane має 25 років.

2. Запис у CSV-файл:

Щоб створити CSV-файл, можна використати функцію encode з cassava.

Ось як ви могли б записати список записів у CSV-файл:

{-# LANGUAGE OverloadedStrings #-}
import Data.Csv
import qualified Data.ByteString.Lazy as BL

main :: IO ()
main = BL.writeFile "output.csv" $ encode [("John", 30), ("Jane", 25)]

Після запуску цієї програми, output.csv буде містити:

John,30
Jane,25

Це стислий вступ до роботи з CSV-файлами у Haskell за допомогою бібліотеки cassava демонструє, як читати з CSV-файлів і записувати в них, роблячи завдання маніпуляції даними більш доступними для тих, хто тільки починає працювати з цією мовою.