KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
So I've read the theory, now trying to parse a file in Haskell - but am not getting anywhere. This is just so weird... Here is how my input file looks: m n k1, k2... a11, ...., an a21,.... a22 ... am1... amn Where m,n are just intergers, K = [k1, k2...] is a list of integers, and a11..amn is a "matrix" (a list of lists): A=[[a11,...a1n], ... [am1... amn]] Here is my quick python version: def parse(filename): """ Input of the form: m n k1, k2... a11, ...., an a21,.... a22 ... am1... amn """ f = open(filename) (m,n) = f.readline().split() m = int(m) n = int(n) K = [int(k) for k in f.readline().split()] # Matrix - list of lists A = [] for i in range(m): row = [float(el) for el in f.readline().split()] A.append(row) return (m, n, K, A) And here is how ( not very ) far I got in Haskell: import System.Environment import Data.List main = do (fname:_) <- getArgs putStrLn fname --since putStrLn goes to IO ()monad we can't just apply it parsed <- parse fname putStrLn parsed parse fname = do contents <- readFile fname -- ,,,missing stuff... ??? how can I get first "element" and match on it? return contents I am getting confused by monads (and the context that the trap me into!), and the do statement. I really want to write something like this, but I know it's wrong: firstLine <- contents.head (m,n) <- map read (words firstLine) because contents is not a list - but a monad. Any help on the next step would be great. So I've just <a href="https://stackoverf
Tags (comma-separated)
Save Edits
Cancel