Что такое код Python в исчислении Haskell и Lambda?Преобразование Python в Haskell/исчисление Lambda
def f1():
x = 77
def f2():
print x
f2
f1
Моя попытка в лямбда-исчислении
\x. 77 (\x.x)
Что такое код Python в исчислении Haskell и Lambda?Преобразование Python в Haskell/исчисление Lambda
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
Я не знаю, python, так что я мог бы быть полностью неправильно, но это моя интерпретация Хаскелла.
f1 = let x = 77 in show x
Или, так как у вас есть постоянная там
f1 = show 77
В лямбда-исчисления:
λprint. print 77
Программа Python не принимает аргумент для функции 'print'. – MtnViewMark
Он делает это, неявно. – Apocalisp
Тогда правильный перевод равен 'λ77. λprint. print 77', или, если вы переверните аргументы, 'λx.x'. :) – Rotsor
В 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
Beta уменьшить:
f1 = 77
И у вас есть программы в Haskell.
Исчисление Lambda не имеет числовых литералов (в отличие от Haskell), поэтому мы должны использовать Church numerals. Так компиляции «77» для лямбда-исчисления:
f1 = \f.\x. f (f (f (f (...) x)))
И есть ваша программа Python в лямбда-исчислению.
+1 только для использования церковных цифр. Я lol'ed. –
Я думаю, мы можем оптимизировать его до '(\ three. (\ Seven. (\ Ten. \ F. \ X.ten (семь f) (семь fx)) (\ f. \ X.three f (seven fx))) (\ f. \ xf (три f (три fx)))) (\ f. \ xf (f (fx))). – Rotsor
Исчисление лямбда не имеет понятия состояния. Печать включает состояние. – codebliss
Предполагаю, что вы намерены вернуть f2 и вызвать f1, потому что, как написано, ваш f1 возвращает None и не имеет значения. – cthulahoops
Также см. Http://blog.sigfpe.com/2008/09/on-writing-python-one-liners.html – sdcvvc