algorithm - Reversing a List before passing it as an argument -


i'm new @ haskell , i've been trying workaround solution while now, can't seem getting anywhere.

i have defined data type called binary recursively

data binary = baseone | 0 binary | 1 binary 

and i'm trying make function takes binary number in list form (i.e. [1, 1, 0, 1] , converts data type binary.

binlistabin :: [int] -> binary binlistabin []              = error "empty list." binlistabin [1]             = baseone binlistabin x:xs             | x == 0    = 0 (binlistabin xs)             | x == 1    = 1  (binlistabin xs)             | otherwise = error "not binary." 

the problem function gives result reversed, guess if can reverse input list before function works it, should work properly, don't know how inside function. have tried toying around where , let sentences, can't seem getting right.

this do:

import data.list (foldl') -- strict foldl  data binary = baseone     -- leading 1 in front of binary numbers             | 0 binary -- 0 followed string of binary digits             | 1 binary  -- 1 followed string of binary digits             deriving show  tobinary :: int -> binary -> binary tobinary 0 = 0 tobinary 1 = 1  fliptobinary :: binary -> int -> binary fliptobinary = flip tobinary  foldbinary :: [int] -> binary foldbinary (1:xs) = foldl' fliptobinary baseone xs 

let's @ example. we'll use favorite number 11 in binary represented [int]:

  8 + 0 + 2 + 1 = 11  [ 1 , 0 , 1 , 1 ] 

the foldbinary function converts binary representation:

foldbinary [1,0,1,1] = 1 (one (zero baseone)) 

in binary represented one (one (zero baseone)). backwards forwards.


Comments

Popular posts from this blog

routing - AngularJS State management ->load multiple states in one page -

python - GRASS parser() error -

json - Gson().fromJson(jsonResult, Myobject.class) return values in 0's -