Ваш вопрос неясен, поэтому я начну с конвертации:
toPeano 0 = Zero
toPeano 1 = Succ Zero
toPeano 2 = Succ (Succ Zero)
Это довольно явно. Вы можете определить числа Пеано с помощью простой рекурсии и использовать эту функцию для всех натуральных чисел:
toPeano 0 = Zero
toPeano x
| x < 0 = error "Can not convert a negative number to Peano"
| otherwise = Succ (toPeano (x-1))
Ядро здесь - Succ (toPeano (x-1))
- оно просто вычитает одно из целого числа и добавляет его в конструкцию Пеано.
А как насчет другого направления? Ну, каждый раз, когда вы видите «Succ», вы можете просто добавить один:
fromPeano Zero = 0
fromPeano (Succ x) = 1 + fromPeano x -- note this is inefficent but right now we don't care
Результаты печати
Теперь единственное, что вы сказали, было похоже на вопрос:
Я понятия не имею, как заставить его распечатать числа Пеано с заданным целым числом.
Это не имеет ничего общего с числами Пеано, но в GHCi вы можете просто запустить любую из следующих функций:
> fromPeano (toPeano 5)
5
Или вы можете создать программу и использовать print
для распечатки результатов:
main = print (toPeano 5829)
и использовать GHC для компиляции программы
$ ghc --make myProg.hs
$ ./myProg
Succ (Succ (Succ (...