【发布时间】:2012-11-01 17:46:26
【问题描述】:
我对编程很陌生,我被要求将 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。 我自己做了一个精简版,这是练习的下一步^^
【问题讨论】:
-
将代码从一种您不完全理解的语言转换为另一种您不完全理解的语言是一种学习编程的糟糕方式。我会建议任何给你练习的人,让他们首先让你感觉舒适地用一种语言阅读和编写代码。
标签: python haskell code-conversion