تحويل بايثون إلى حساب التفاضل والتكامل هاسكل / لامدا

StackOverflow https://stackoverflow.com/questions/1814061

سؤال

ما هو كود بايثون في حساب التفاضل والتكامل هاسكل ولامدا؟

def f1():
   x = 77
   def f2():
      print x
   f2
f1

محاولتي في حساب التفاضل والتكامل لامدا

\x. 77 (\x.x)
هل كانت مفيدة؟

المحلول

هاسكل:

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

نصائح أخرى

في هاسكل:

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

ولديك برنامجك في هاسكل.

حساب التفاضل والتكامل لامدا لا يحتوي على أرقام حرفية (على عكس هاسكل)، لذلك يجب علينا استخدامه أرقام الكنيسة.لذلك يتم تجميع "77" لحساب التفاضل والتكامل لامدا:

f1 = \f.\x. f (f (f (f ( ... ) x)))

وهناك برنامج بايثون الخاص بك في حساب التفاضل والتكامل Lambda.

لا أعرف لغة بايثون، لذا قد أكون مخطئًا تمامًا، ولكن هذا هو تفسير هاسكل الخاص بي.

f1 = let x = 77 in show x

أو بما أن لديك ثابتًا هناك

f1 = show 77

في حساب التفاضل والتكامل لامدا:

λprint. print 77
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top