Я новичок в программировании, и меня попросили преобразовать 3 функции haskell в python в качестве практического упражнения. 3 функции связаны, так как выход одной используется как вход следующей и так далее.
Я понимаю, что делают функции Haskell, но я понятия не имею, как начать их преобразование!
Это код haskell:
factorial :: Int -> Int
factorial n = product (down n)
product :: [Int] -> Int
product [] = 1
product (a:as) = a * product as
down :: Int -> [Int]
down 0 = []
down n = n : down (n-1)
И это была моя попытка преобразовать его:
class function:
def down(self):
if self.n == 0:
self.lista = []
else:
self.lista = range(self.n, 0, -1)
def product(self):
for x in self.lista:
if x == []:
self.product = 1
if x != []:
for i in self.lista:
self.product = i * self.product
def factorial(self):
self.n = int(raw_input("n="))
self.fact = self.product(self.down(self.n))
print self.fact
raw_input()
c = function()
c.factorial()
Ну, во-первых, я считаю, что это не «прямое преобразование» кода Haskell. Это было бы хорошо, но во-вторых, это не работает.
Это отсутствие опыта программирования убивает меня... может ли кто-нибудь помочь мне с этой проблемой?
Большое спасибо!
Редактировать:
Суть этой проблемы в том, чтобы точно преобразовать haskell в python. Я сам сделал урезанную версию, это был следующий шаг в упражнении ^^