Итак, я должен сделать десятичное число в двоичном списке следующим образом: intToBitString 4 = [1,0,0]. Что я и сделал следующим образом:
intToBitString n = reverse (helper n)
helper 0 = []
helper n
| n `mod` 2 == 1 = 1 : helper (n `div` 2)
| n `mod` 2 == 0 = 0 : helper(n `div` 2)
Но тогда мне также нужно создать функцию с именем intToByte, которая дополняет список нулями до тех пор, пока его длина не составит 8 элементов. (таким образом, делая это байтовой строкой) Вот так: intToByte 7 = [0, 0, 0, 0, 0, 1, 1, 1]
Я пробовал так много вещей, но они никогда не работают. Я новичок, поэтому знаю только «если» l oop, как я показал выше, и рекурсию, но я не знаю ничего фантастического. Одна из моих попыток:
intToByte 0 = [0]
intToByte n
| eight n == helper2 n = reverse (helper2 n)
| otherwise = eight n
helper2 0 = []
helper2 n
| n `mod` 2 == 1 = 1 : helper2 (n `div` 2)
| n `mod` 2 == 0 = 0 : helper2 (n `div` 2)
eight n
| length (helper2 n) < 8 = 0 : eight n
| otherwise = helper2 n
Я работал над этим так много часов, что меня это смущает. Но это часть важного задания, поэтому помощь будет очень признательна!