Python을 Haskell / Lambda 미적분학으로 변환하십시오
-
06-07-2019 - |
문제
Haskell과 Lambda Calculus의 Python 코드는 무엇입니까?
def f1():
x = 77
def f2():
print x
f2
f1
람다 미적분학에서의 나의 시도
\x. 77 (\x.x)
해결책
Haskell :
f1 :: IO ()
f1 = let x = 77
f2 = print x
in f2
main :: IO ()
main = f1
또는 당신의 람다 미적분학처럼 :
f1 :: Int
f1 = let f2 = x
x = 77
in f2
main :: IO ()
main = print f1
다른 팁
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"을 컴파일하는 것 :
f1 = \f.\x. f (f (f (f ( ... ) x)))
Lambda Calculus에는 Python 프로그램이 있습니다.
나는 Python을 모르기 때문에 완전히 잘못 될 수 있지만 이것은 나의 Haskell 해석입니다.
f1 = let x = 77 in show x
또는 당신은 거기에 일정이 있기 때문에
f1 = show 77
람다 미적분학 :
λprint. print 77
제휴하지 않습니다 StackOverflow