擅长:python、mysql、java
<p>当将代码从命令式语言移植到函数式语言时,您应该尝试转换代码中使用的算法,而不是代码本身。在</p>
<p>代码正在执行<a href="http://en.wikipedia.org/wiki/Selection_sort" rel="nofollow">selection sort</a>,所以您想问问自己,选择排序是做什么的?在</p>
<ul>
<li>找到最小值</li>
<li>把它放在分类列表的前面。在</li>
<li>对其余的项目进行排序,将结果放在最小值之后。在</li>
</ul>
<p>那么代码会是什么样子呢?这肯定会奏效:</p>
<pre class="lang-ml prettyprint-override"><code>let rec selection_sort = function
| [] -> []
| l -> let min = List.min l in (* find the minimum *)
let rest = List.filter (fun i -> i <> min) l in (* find the rest *)
let sorted_rest = selection_sort rest in (* sort the rest *)
min :: sorted_rest (* put everything together *)
</code></pre>