Esistono funzioni di ordinamento standard in SML? La documentazione su Internet è così scarsa che non sono riuscita a trovarne.Funzioni di ordinamento standard in SML?
risposta
Rachel è solo in parte ragione. È vero che non esiste alcuna funzionalità di ordinamento definita nella libreria di base SML, tuttavia la maggior parte delle implementazioni estendono la libreria di base e aggiungono funzionalità aggiuntive.
Come tale MosML ha sia un modulo ArraySort sia un modulo ListSort e SML/NJ ha una firma LIST_SORT con un'implementazione ListMergeSort. Dispone anche di altre funzionalità di ordinamento sugli array come MosML. Vedere lo toc del manuale della libreria SML/NJ per un elenco completo.
come su questo per l'ordinamento di un elenco? si può sempre usare inversa per ottenere il contrario sia
- 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
vedere here
Cosa sono unire, prendere e saltare ? Mi spiace di chiederlo, ma c'è davvero una documentazione zilch là fuori. –
Quindi presumo che non ci sia una funzione di ordinamento standard in SML, giusto? –
No, devi creare il tuo –
Ecco un Quicksort standard di
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;
solo in alcuni passi di confronto (funzione che prende due elemnets con lo stesso tipo e restituire boolean) e restituirà una funzione di ordinamento per voi Se sei stato più in discussione don Non esitate a chiedere :)
a proposito, questo ordinatore conserverà l'ordine se e solo se func (x, y) = false per x = y –
cosa stai cercando di ordinare? –
@ Elenchi RachelGallen. –
Non so cosa intendi per scarse, ma la home page [SML Basis Library] (http://www.standardml.org/Basis/) è un buon posto per cercare le funzionalità –