-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Gray encoding schemes -- -- Gray codes satisfy the property that two successive values differ in -- only one digit. Usually the term "Gray code" refers to the Binary -- Reflected Gray code (BRGC), but non-binary Gray codes have also been -- discovered. @package gray-extended @version 1.5 -- | Gray encoding schemes. A Gray code is a list of values such that two -- successive values differ in only one digit. Usually the term /Gray -- code/ refers to the Binary Reflected Gray code (BRGC), but non-binary -- Gray codes have also been discovered. Some Gray codes are also -- cyclic: the last and first values differ in only one digit. module Codec.Gray -- | grayCodes k generates the list of Binary Reflected -- Gray Code (BRGC) numbers of length k. This code is cyclic. grayCodes :: Int -> [[Bool]] -- | integralToGray n encodes n using a BRGC, and -- returns the resulting bits as an integer. For example, encoding -- 17 in BRGC results in 11001, or 25. So -- integralToGray 17 returns 25. integralToGray :: Bits a => a -> a -- | grayToIntegral n decodes n using a BRGC, and -- returns the resulting integer. For example, 25 is 11001, -- which is the code for 17. So grayToIntegral 25 returns -- 17. grayToIntegral :: (Num a, Bits a) => a -> a -- | naryGrayCodes xs k generates a non-Boolean (or n-ary) -- Gray code of length k using the elements of xs as -- "digits". This code is cyclic. -- -- Ex: naryGrayCodes "012" 4 generates a ternary Gray -- code that is four digits long. naryGrayCodes :: [a] -> Int -> [[a]]