この記事では、クイックソート・アルゴリズムの実装について、 様々な言語で書かれた関数型プログラミングのコードを紹介しています
なお、この記事の内容は、 2ちゃんねる掲示板 のプログラム板にあるスレッド 【PHP,Python】スクリプト, バトルロワイヤル36【Perl,Ruby】 で行われた議論を整理、加筆したものです。
関数型言語が関数型プログラミングを何の苦もなく実践できるのは、当たり前の話です。
Haskell
quicksort [] = []
quicksort (pivot:xs) = quicksort littles ++ pivot:(quicksort bigs)
where
f x (ls, bs) = if x < pivot then (x:ls, bs) else (ls, x:bs)
(littles, bigs) = foldr f ([], []) xs
この節で取り上げる Ruby, JavaScript, Python はどれも関数型言語には分類されていませんが、関数型の特性を取り入れていると言われています。
それでは、これら言語の関数型プログラミング・スタイルを見ていくことにしましょう。
JavaScript
function quicksort(xs) {
function f(xs) {
var pivot = xs[0];
function g(pair, x) {
var ls = pair[0], bs = pair[1]
return x < pivot ? [ls.concat([x]), bs] : [ls, bs.concat([x])];
}
var pair = xs.slice(1).reduce(g, [[], []]);
var littles = pair[0], bigs = pair[1];
return [].concat(
quicksort(littles), [pivot], quicksort(bigs)
); }
return xs.length <= 1 ? xs : f(xs); }
http://www.h6.dion.ne.jp/~machan/misc/qsort-in-fp.html
探検
集合論に基づいた言語を作りたい
■ このスレッドは過去ログ倉庫に格納されています
118デフォルトの名無しさん
2014/08/17(日) 10:45:48.55ID:ruDVRpF3■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【速報】「女芸人No.1決定戦 THE W」9代目女王にニッチェ! 7年ぶり3度目で悲願の優勝 [牛丼★]
- 中国・ロシア両軍の爆撃機が東京方面へ向かう「異例のルート」を共同飛行…核も搭載可能、連携して威嚇か ★7 [ぐれ★]
- 731部隊の新資料、中国が公開 「日本が細菌戦の罪を自白」と主張 ロシアが引き渡し [少考さん★]
- 【広島】ペルー女性の国保加入を誤って認め、福山市が医療費484万円を肩代わりするミス…入院して手術を受ける [ぐれ★]
- 東京の自販機そばに金塊4200万円分、何者かに持ち去られる…札幌の50代が8000万円振り込んだ後に上京して被害 [どどん★]
- 山田邦子 ひょうきん族時代の年収は12億円「ただ税金が80%」 [muffin★]
- テメェは俺を怒らせたオラァ👊💢😅💢👊🏡
- 【実況】博衣こよりのえちえちダンガンロンパ2🧪
- 中国 わりとオブラートに包んでわーくにを牽制してしまう「軍国主義復活の企みは失敗する」 [163661708]
- ブレイキングダウンの前日記者会見ビンタされて失神してる奴出てるやん
- 好きな人じゃない仲良い人からどうでもいい報告ラインが来る
- おさかなさんあつまれえ
