
On 9/28/07, Chuk Goodin
I have a list of lists of pairs of numeric Strings (like this: [["2","3"],["1","2"],["13","14"]] etc.) I'd like to change it into a list of a list of numbers...
Now that you know (map . map) which Jonathan explained you need to apply that to a function that converts 'String's to 'Int's. You can write this function yourself or use hoogle [1] to search for a function in the standard library that does what you want. (If you now what type classes are you don't have to read any further) Hint: the reverse of the function you are looking for is called 'show' and its type is 'Show a => a -> String'. Why isn't the type of 'show' just 'Int -> String'? Well you probably not only want to convert Ints to Strings but also Floats to Strings, Doubles to Strings, Foo's to String, Bars to Strings, ... So you want to have a function called 'show' that is "overloaded" to work on any type that can be 'Show'n. To declare an overloaded function in Haskell you should define a type class, like this: class Show a where show :: a -> String This declares a class of types called 'Show' for which a function 'show' is defined which converts a value of that type into a 'String'. Now you should provide actual definitions of 'show' for the types you want to show. These are called instance declarations: instance Show Int where show n = ... code that actually converts the Int 'n' to a 'String'... instance Show Float where show f = ... code that actually converts the Float 'f' to a 'String'... Now you can use the function 'show' to convert Ints and Floats to Strings. Nice! Of course you are looking for the reverse of 'show', good luck searching... regards, Bas. [1] Hoogle, The Haskell API Search Engine: http://haskell.org/hoogle