hello, Fredrik Petersson wrote:
Hi there! Iam new to the list so feel free to shout at me when i do wrong! :) Software-designer from sweden, likes fast bikes and metal, thats me, and hi to you all! welcome
Yeah ok to the problem, i have this stupid code, [c | (c,i) <- l]
Where (c,i) are a tuple from a (Char,Int) and l is a [(Char,Int)] So far everthings nice but i would like to cast the c to a Sting and add : in front, So if i fry with a list like [('d',3)('f',3)] I end up with "fg" but i want it to look like ":f :g"
piece of cake, huh? Give me a hit or a webpage to read more from...? How do you TypeCast in haskell? no type casting in haskell. and we think of that as a feature, not a bug :-)
having said that, you can write functions that convert values of one type into values of another. for example: toString :: Char -> String toString c = [c] in Haskell the type String is the same as [Char], i.e. a string is a list of characters. another useful predefined function is: concat :: [[a]] -> [a] that given a list of lists will produce a "flattened" list that contains all the elements, e.g. concat [[1,2],[3,4]] = [1,2,3,4]. in particular when you take 'a' above to be Char you get: concat :: [String] -> String which takes a list of strings and gives you back a single string containing all the input strings. now you can achieve what you wanted as: concat [ ":" ++ toString c ++ " " | (c,i) <- l ] ++ joins two lists into a single list. there are a lot of useful functions in the Prelude. hope this helped. by the way a better list to post questions when you are stuck with a program is probably haskell-cafe@haskell.org, but people will usually reply on either list. bye iavor -- ================================================== | Iavor S. Diatchki, Ph.D. student | | Department of Computer Science and Engineering | | School of OGI at OHSU | | http://www.cse.ogi.edu/~diatchki | ==================================================