2013-01-19 11 views
5

क्या एसएमएल में मानक सॉर्टिंग फ़ंक्शन हैं? इंटरनेट पर प्रलेखन इतना दुर्लभ है कि मुझे कोई भी नहीं मिला।एसएमएल में मानक सॉर्टिंग फ़ंक्शन?

+0

आप किस प्रकार सॉर्ट करने की कोशिश कर रहे हैं? –

+0

@ राहेलगेलन सूचियां। –

+0

मुझे नहीं पता कि आपका क्या मतलब है, लेकिन [एसएमएल बेसिस लाइब्रेरी] (http://www.standardml.org/Basis/) मुखपृष्ठ कार्यक्षमता देखने के लिए एक अच्छी जगह है –

उत्तर

11

राहेल केवल आंशिक रूप से सही है। यह सच है कि एसएमएल बेसिस लाइब्रेरी में परिभाषित कोई सॉर्टिंग कार्यक्षमता नहीं है, हालांकि अधिकांश कार्यान्वयन आधार पुस्तकालय का विस्तार करते हैं और अतिरिक्त कार्यक्षमता जोड़ते हैं।

के रूप में इस तरह के MosML दोनों एक ArraySort और एक ListSort मॉड्यूल है, और एसएमएल/न्यू जर्सी एक ListMergeSort कार्यान्वयन के साथ एक LIST_SORT हस्ताक्षर हैं। इसमें एमएसएमएल के रूप में सरणी पर कुछ अन्य सॉर्टिंग फीचर्स भी शामिल हैं। पूर्ण सूची के लिए, एसएमएल/एनजे लाइब्रेरी मैनुअल के toc देखें।

1

इस सूची को सॉर्ट करने के लिए इसके बारे में कैसे? आप हमेशा रिवर्स प्राप्त करने के लिए रिवर्स इस्तेमाल कर सकते हैं या तो

- fun sort(L) = 
= if L=[] then [] 
    = else if tl(L)=[] then L 
= else merge(sort(take(L)),sort(skip(L))); 
val sort = fn : int list -> int list 

देख here

+0

विलय, लेना और छोड़ना क्या है ? पूछने के लिए खेद है, लेकिन वहाँ वास्तव में वहाँ zilch दस्तावेज है। –

+0

तो मुझे लगता है कि एसएमएल में मानक सॉर्ट फ़ंक्शन नहीं है, है ना? –

+1

नहीं, आपको अपना खुद का –

1

यहाँ एक मानक quicksort

fun qsort(func) = 
let 
    fun 
     sort([]) = [] | 
     sort(lhd :: ltl) = sort(List.filter(fn (x) => func(x, lhd))(ltl)) @ [lhd] @ sort(List.filter(fn (x) => not(func(x, lhd)))(ltl)) 
in sort 
end; 

बस कुछ तुलनित्र (समारोह है कि एक ही प्रकार के और वापसी बूलियन के साथ दो elemnets लेता है) में फेंक और इसके लिए आप एक प्रकार समारोह वापस आ जाएगी आप अब डॉन सवाल किया गया तो है पूछने में संकोच नहीं करते :)

+0

बनाना है, यह सॉर्टर आदेश सुरक्षित रखेगा और केवल तभी यदि func (x, y) = x = y के लिए झूठा –

संबंधित मुद्दे