Comment mettre en œuvre Décimal à Binaire de la fonction en Haskell

J'ai mis en place un binaire à décimal fonction en Haskell et je suis actuellement en train de travailler sur une fonction qui permettrait de convertir un nombre décimal en une valeur binaire. (Je suis conscient que ces fonctionnalités sont disponibles quelque part même si ils ne font pas partie de Prélude.hs)

Je suis venu avec le code suivant pour un C-type langue de la procédure, mais j'ai du mal à l'adapter dans le paradigme fonctionnel.

while (n > 0)
{
    if (n % 2 == 1)
        str = str + "1";
    else
        str = str + "0";
    n = n / 2;
}

Je me suis aventuré dans la programmation fonctionnelle en Haskell seulement récemment, donc je suis assez nouveau dans le fonctionnel manière de penser. J'ai tenté ci-dessus en utilisant à la fois la récursivité et d'une compréhension de liste, mais je ne suis pas sûr de la manière de placer les gardes et la logique correctement puisque cela implique de multiples conditions. J'utilise un Int list pour tenir le séparer les bits binaires.

--Decimal to binary
toBin:: Int -> [Int]
toBin 0 = [0]
toBin n | (n % 2 == 1) =
        |(n % 2 == 0) = 

J'ai compris que ce modèle serait de laisser le programme choisir de garde et de fin de l'évaluation de la fonction. Suis-je sur la mauvaise voie?

Ci-dessous est ce que je suis venu avec la récursion primitive de convertir n'importe quelle base (moins de 10, à la place de l'2) décimales.

toDecimal :: [Int] -> Int
toDecimal [] = 0
toDecimal (x:xs) = (x * 2 ^(length xs)) + bin xs

Merci d'avance.

OriginalL'auteur Tru | 2012-02-06