इस तरह एक साधारण संलग्न समारोह (एफ # में):मैं पूंछ-पुनरावर्ती सूची को कैसे कार्यान्वित कर सकता हूं?
let rec app s t =
match s with
| [] -> t
| (x::ss) -> x :: (app ss t)
, दुर्घटना होगा जब रों बड़ा हो जाता है समारोह पूंछ पुनरावर्ती नहीं है, क्योंकि। मैंने देखा कि एफ # का मानक एपेंड फ़ंक्शन बड़ी सूचियों से क्रैश नहीं होता है, इसलिए इसे अलग-अलग कार्यान्वित किया जाना चाहिए। तो मैंने सोचा: एक पूंछ की पुनरावृत्ति परिभाषा की तरह दिखने की परिभाषा कैसी दिखती है? मैं इस तरह कुछ आया:
let rec comb s t =
match s with
| [] -> t
| (x::ss) -> comb ss (x::t)
let app2 s t = comb (List.rev s) t
जो काम करता है, लेकिन अजीब दिखता है। क्या एक और सुरुचिपूर्ण परिभाषा है?
पहले उदाहरण में, बी पर पैटर्न मिलान करने का क्या मतलब है यदि यह सभी पैटर्न में समान है? आप बस बी – Rubys
@Rubys का उपयोग कर सकते हैं: इसकी स्टाइल पसंद, न तो सही और न ही गलत;) – Juliet
क्या आप वाकई काम कर रहे हैं? मुझे > append2 [1; 2] [3; 4] ;; वैल इसे: int सूची = [2; 3; 4] और > append3 [1; 2] [3; 4] ;; वैल इसे: int सूची = [1; 3; 4] हालांकि मुझे त्रुटि दिखाई नहीं दे रही है, append2 मुझे ठीक लग रहा है .. – martingw