
On Mon, Apr 07, 2008 at 07:51:05PM -0700, Jackm139 wrote:
I have an assignment to make a program to test whether two lists use the same characters for each string. e.g.
sameCharacter ["rock", "cab"] ["cork", "abc"] True
My plan to tackle this was to use: nub to eliminate duplications, sort to put the characters in order, and map to put characters together.. and then somehow check to see if these characters are the same.
Probably you won't need to eliminate duplicates, sorting would be enough (although it depends on the assignment details). Comparing Chars (and Strings) can be accomplished with
(==) :: (Eq a) => a -> a -> Bool
My problem right now is just figuring out how to make a function that uses these three functions to give me a list of tuples.
To get list of tuples you can use
zip :: [a] -> [b] -> [(a, b)]
or alternatively you can apply a binary function in a "pairwise way" using
zipWith :: (a -> b -> c) -> [a] -> [b] -> [c]
as in
zipWith (+) [1, 2] [3, 4] [4, 6]
For chaining functions you can use function composition:
(.) :: (b -> c) -> (a -> b) -> a -> c
as in
not :: Bool -> Bool and :: [Bool] -> Bool nand :: [Bool] -> Bool nand = not . and
or do without composition by specifying all arguments:
nand xs = not (and xs)
Hope this helps, -- Krzysztof Kościuszkiewicz Skype: dr.vee, Gadu: 111851, Jabber: kokr@jabberpl.org "Simplicity is the ultimate sophistication" -- Leonardo da Vinci