I am writing a function, It's my first Haskell program in output function I will be working on [[3,4],[1,2,3,2],[3,9,9,4],[8,3,3,4] type structures I'd like to know how to index a particular element at run-time as I don't know on which element of which sublist I am at the moment in pullHelper function which starts with values !! ind p xs !!
in C it would look something like values[][10]={{....}.{....}..}; int index[4]={3,4,6,7}; int i; i for(i = 0; i<4; i++) { int c = index[i]; if(values[i][c-1] == 0) /* do something */ else /*other things*/ } Any help would be appreciated --Stack for the digits of numbers, a modulo b, stack :: Int->Int->[[Int]] stack x y = reverse (split (subStack x y)) where --Split the digits further and constructs lists of lists split :: [Int]->[[Int]] split xs | length xs == 0 = [] | otherwise = (reverse (subStack (head xs) 10)): (split (tail xs)) subStack :: Int->Int->[Int] subStack x y | x == 0 = [] | otherwise = (mod x y):(subStack (div x y) y) -- It should work for 999999999 range but since I am using -- Int maximum is 2^31-1 output :: Int->[Char] output n = loop (stack n 10000) where -- goes through sets of at most 4 digits in the list, loop loop :: [[Int]]->[Char] loop xs | length xs == 0 = [] | otherwise = (strCon (head xs)) : (loop (tail xs)) strCon :: [Int]->[Char] strCon xs | length xs == 0 = [] | otherwise = (pullStr (head xs)) : (strCon (tail xs)) pullStr :: Int->[Char] pullStr s | s == 0 = [] | otherwise = pullHelper s --Helping to pull elements from the set, nested if pullHelper :: Int->[Char] pullHelper p | values !! ind p xs !! p - 1 == 0 = ones !! p - 1 ++ values !! ind p xs !! 0 | otherwise = values !! ind p xs !! p - 1 --Nasty ! _______________________________________________ Haskell-Cafe mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell-cafe