में f @ expr और expr // f का उपयोग करके विभिन्न परिणाम मैं Prefix
और Postfix
ऑपरेटरों (@
और //
क्रमशः क्रमशः) के साथ खेल रहा था और मैं निम्नलिखित समस्या में भाग गया।गणित
को देखते हुए निम्नलिखित कोड है, वे एक ही सटीक तरीके से मूल्यांकन:
Hold[[email protected]@data] // FullForm
(* Hold[MatrixPlot[Sort[data]]] *)
Hold[data // Sort // MatrixPlot] // FullForm
(* Hold[MatrixPlot[Sort[data]]] *)
हालांकि, निम्नलिखित भाव को देखते हुए, मैं अलग परिणाम प्राप्त:
[email protected]'[0]
(* Abs'[0] *)
Abs'[0] // FunctionExpand
(* 0 *)
मैं वास्तव में काफी यकीन नहीं है यह क्यों है कोड के दर्जनों अन्य स्निपेट में, [email protected]
, expr // f
, और f[expr]
सभी एक ही परिणाम का मूल्यांकन करते हैं। यह एक विशेष मामला यह परिणाम क्यों देता है?
यह लिंक संभवतः प्रासंगिक है: http://www.mathprogramming-intro.org/book/node174.html, जहां मैं समान प्राथमिकता से संबंधित मुद्दों पर चर्चा करता हूं। मूल अभिव्यक्ति पर 'फुलफॉर्म' का उपयोग करना अक्सर मदद करता है। –
@ लियोनीड 'फुलफॉर्म' यह देखने का एक बेहतर तरीका है कि मैंने जो सुझाव दिया है उससे क्या हो रहा है; मैंने इसे अपने उत्तर में जोड़ा, आशा है कि आपको – acl
@acl ग्रेट नहीं लगेगा! जब आप बाहर आए, तो मैं इसका जवाब लिख रहा था, इसलिए मैंने अपना त्याग दिया, आपके लिए वोट दिया और लिंक छोड़ दिया। दोनों दृष्टिकोण सूचीबद्ध होना अच्छा है। –