Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Python转换为Haskell/Lambda演算_Python_Haskell_Lambda_Lambda Calculus - Fatal编程技术网

将Python转换为Haskell/Lambda演算

将Python转换为Haskell/Lambda演算,python,haskell,lambda,lambda-calculus,Python,Haskell,Lambda,Lambda Calculus,Haskell和Lambda演算中的Python代码是什么? def f1(): x = 77 def f2(): print x f2 f1 我对lambda微积分的尝试 \x. 77 (\x.x) 哈斯克尔: f1 :: IO () f1 = let x = 77 f2 = print x in f2 main :: IO () main = f1 或者更像你的lambda演算: f1 :: Int f1 = let f2 =

Haskell和Lambda演算中的Python代码是什么?

def f1():
   x = 77
   def f2():
      print x
   f2
f1
我对lambda微积分的尝试

\x. 77 (\x.x)
哈斯克尔:

f1 :: IO ()
f1 = let x = 77
         f2 = print x
     in f2

main :: IO ()
main = f1
或者更像你的lambda演算:

f1 :: Int
f1 = let f2 = x
         x = 77
     in f2

main :: IO ()
main = print f1
λprint. print 77
f1 = \f.\x. f (f (f (f ( ... ) x)))
哈斯克尔:

f1 :: IO ()
f1 = let x = 77
         f2 = print x
     in f2

main :: IO ()
main = f1
或者更像你的lambda演算:

f1 :: Int
f1 = let f2 = x
         x = 77
     in f2

main :: IO ()
main = print f1
λprint. print 77
f1 = \f.\x. f (f (f (f ( ... ) x)))

我不懂python,所以我可能完全错了,但这是我的Haskell解释

f1 = let x = 77 in show x
或者,因为这里有一个常数

f1 = show 77

我不懂python,所以我可能完全错了,但这是我的Haskell解释

f1 = let x = 77 in show x
或者,因为这里有一个常数

f1 = show 77
在lambda演算中:

f1 :: Int
f1 = let f2 = x
         x = 77
     in f2

main :: IO ()
main = print f1
λprint. print 77
f1 = \f.\x. f (f (f (f ( ... ) x)))
在lambda演算中:

f1 :: Int
f1 = let f2 = x
         x = 77
     in f2

main :: IO ()
main = print f1
λprint. print 77
f1 = \f.\x. f (f (f (f ( ... ) x)))
在哈斯克尔:

f1 = f2
    where x  = 77
          f2 = print x
重构,因为IO只是混淆了问题:

f1 = f2
    where x  = 77
          f2 = x
重构:

f1 = x
    where x = 77
重构,因为你想要变量

f1 = (\x -> x) 77
β-减少:

f1 = 77
你在Haskell有你的项目

Lambda演算没有数字文字(不像Haskell),所以我们必须使用。 因此,将“77”编译为lambda演算:

f1 :: Int
f1 = let f2 = x
         x = 77
     in f2

main :: IO ()
main = print f1
λprint. print 77
f1 = \f.\x. f (f (f (f ( ... ) x)))
在Lambda演算中有一个Python程序。

在Haskell中:

f1 = f2
    where x  = 77
          f2 = print x
重构,因为IO只是混淆了问题:

f1 = f2
    where x  = 77
          f2 = x
重构:

f1 = x
    where x = 77
重构,因为你想要变量

f1 = (\x -> x) 77
β-减少:

f1 = 77
你在Haskell有你的项目

Lambda演算没有数字文字(不像Haskell),所以我们必须使用。 因此,将“77”编译为lambda演算:

f1 :: Int
f1 = let f2 = x
         x = 77
     in f2

main :: IO ()
main = print f1
λprint. print 77
f1 = \f.\x. f (f (f (f ( ... ) x)))

还有你的Python程序在Lambda演算中。

Lambda演算没有状态的概念。打印涉及到状态。我想您打算返回f2并调用f1,因为编写时f1不返回任何值,并且是未调用的。另外,看看这段Python代码试图做什么?这是一个相当生硬的代码。也许拥有更现实的Python代码会更有启发性。或者在你试图理解的lambda演算中有什么特别的概念吗?lambda演算没有状态的概念。打印涉及到状态。我想您打算返回f2并调用f1,因为编写时f1不返回任何值,并且是未调用的。另外,看看这段Python代码试图做什么?这是一个相当生硬的代码。也许拥有更现实的Python代码会更有启发性。或者你正在尝试理解lambda演算中有什么特殊的概念吗?Python程序没有为
print
函数提供参数。那么正确的翻译是
λ77。λ打印。打印77,或者,如果翻转参数,
λx.x
:)Python程序没有为
print
函数取参数。那么正确的翻译是
λ77。λ打印。打印77,或者,如果翻转参数,
λx.x
:)我想我们可以将它优化为
(\f.\x.ten(seven f)(seven f x))(\f.\x.trief(seven f x))(\f.\x.f(three f(three f x)))(\f.\x.f(f(fx))
。我想我们可以将它优化为
(\f.\x.ten(seven.\f.\x.ten(seven f)(seven f)(seven f x))(\f).\x.trief(seven f)(seven f x))(\f)x