यह प्रश्न मेरे लिए उत्सुक और दिलचस्प लगता है। इसलिए, मैं यह पता लगाने की कोशिश कर रहा हूं कि लैम्ब्डा कैलकुस क्या है, एक उत्तर ढूंढें और इसे ओपी को दिखाना चाहते हैं (सभी संकेतों को वास्तव में दिखाया गया है, स्पूइलर अलर्ट)।
λ> let f = (\g x y z -> x^3 - g(x + g(y - g z) + g(z^2)))
f ::
(Integer -> Integer) -> Integer -> Integer -> Integer -> Integer
समारोह तो, हम मिल गया है, जो समारोह और 3 नंबर प्राप्त और जवाब देते हैं:
सबसे पहले, f
को फिर से परिभाषित करने की कोशिश कर सकते हैं। curring हम यहीं g
परिभाषा जोड़ सकते हैं f_new = f g
की तरह, का उपयोग करना:
λ> let f = (\g x y z -> x^3 - g(x + g(y - g z) + g(z^2))) (\x -> 2*x^2 + 10*x + 1)
f :: Integer -> Integer -> Integer -> Integer
हम काम हो गया। आइए इसे जांचें:
λ> f 0 0 0
-13
उत्तर सही है।
युपीडी:
उन उदाहरण let
में सिर्फ एक दुभाषिया में समारोह की घोषणा करने के लिए रास्ता है, इसलिए अंतिम जवाब है:।
f :: Num a => a -> a -> a -> a
f = (\g x y z -> x^3 - g(x + g(y - g z) + g(z^2))) (\x -> 2*x^2 + 10*x + 1)
स्रोत
2011-11-20 00:09:57
'एफ = फ्लिप फ्लिप ((1 +) एपी ((+)। (2 *)। (^ 2)) (10 *))। (फ्लिप।)। एपी ((।)। (।)। (।)। (-)। (^ 3)) (((एपी आईडी।)।) फ्लिप फ्लिप (फ्लिप आईडी। (^ 2))। (लिफ्टएम 2 (लिफ्टएम 2 (+))।)। (। ((एपी आईडी।)। (। फ्लिप आईडी)। (।)। (-)))। (।)। (।)। (+)) ': f lambdabot द्वारा व्यर्थ बना दिया गया – fuz