{-# OPTIONS_GHC -Wall #-} --MCP import Data.Array.IO import Inputter (input, Inputter(..)) import CircularShifter (circularShift, CircularShifter(..)) import Alphabetizer (alphabetize) import Outputter (output) -- One choice pipe1 :: String -> IO () pipe1 s = input s >>= circularShift >>= alphabetize >>= getElems >>= output -- The type annotation below chooses IOArray. Other choices could be made main :: IO () main = do sampleData <- input "test.txt" :: IO (IOArray Int [String]) -- sampleData <- newArray_ (0,1) :: IO (IOArray Int [String]) -- blank array -- writeArray sampleData 0 ["blut", "dark"] -- writeArray sampleData 1 ["open", "derp"] x <- circularShift sampleData y <- alphabetize x output y -- z <- getElems y -- output z