Elementary List OperationsJ

print

リスト処理の基礎


リストの作成とアクセス

整数列の作成: <int1>..<int2>



説明:<int1>..<int2> により <int1> から <int2>までの連続する整数のリストを作ります。<int1><int2>より大きい場合は空のリストを返します。

例:

式: 結果:
4..9 [4, 5, 6, 7, 8, 9]
-2..2 [-2, -1, 0, 1, 2]
4..1 []





リストの長さ: length(<list>)



説明: この演算子は <list>の要素の個数を返します。

例:

式: 結果:
length([2 ,5 ,7 ,3]) 4
length([2 ,[5, 4, 5] ,7 ,3]_2) 3
length(1..1000) 1000


length 演算子と repeat 演算子を組み合わせれば、リストのすべての要素を簡単に書き出すことができます。

repeat(length(list),
   println(list_#);
)


ここで一つ注意: repeat 演算子を使ってすべての要素を横断するようなやりかたがいつも有用とは限りません。よりエレガントな方法があります。このあとに解説する演算子、forall()やapply()をごらんください。




内容のテスト: contains(<list>,<expr>)



説明: この演算子は、 <list> の中に<expr>があるかどうかで、true または false を返します。

例:

式: 結果:
contains([1,3,4,5],4) true
contains([1,3,4,5],7) false
contains([1,3,4,5],2*2) true







リストの操作



リストの連結: concat(<list1>,<list2>)



説明: この演算子は、2つのリストを連結します。この演算子は <list1>++<list2>と書くのと同じです。

例:

式: 結果:
concat(["a", "b"], ["c", "d"]) ["a", "b", "c", "d"]
["a", "b"] ++ ["c", "d"] ["a", "b", "c", "d"]





リストからの要素の削除: remove(<list1>,<list2>)



説明: この演算子は、<list2> の要素と同じものを <list1>から削除します。 この演算子は、 <list1> -- <list2>.と書くのと同じです。

例:

式: 結果:
remove([1,3,4,5,1,5,6], [1,3,7]) [4,5,5,7]
[1,3,4,5,1,5,6]--[1,3,7] [4,5,5,7]





リストの共通部分: common(<list1>,<list2>)



説明: この演算子は <list1><list2> の両方に含まれるものを集めたリストを作ります。 この演算子は <list1>~~<list2> と書くのと同じです。

例:

式: 結果:
common([1,3,4,5,1,5,6], [1,3,7]) [1,3]
[1,3,4,5,1,5,6]~~[1,3,7] [1,3]





要素の追加: append(<list>,<expr>)



説明: この演算子は、 <expr><list> の最後に追加したリストを返します。 この演算子は <list>:><expr> と書くのと同じです。

例:

式: 結果:
append(["a", "b", "c"], "d") ["a", "b", "c","d"]
["a", "b", "c"]:>"d" ["a", "b", "c","d"]





要素の前方付加: prepend(<expr>,<list>)



説明: この演算子は、 <expr><list> の前方に付加したリストを返します。 この演算子は <expr><:<list> と書くのと同じです。

例:

式: 結果:
prepend("d",["a", "b", "c"]) ["d","a", "b", "c"]
"d"<:["a", "b", "c"] ["d","a", "b", "c"]





リストの要素の走査



全要素走査: forall(<list>,<expr>)



説明: この演算子は、ある操作をリストのすべての要素に対して行うときに有用です。第1引数の <list> を走査し、それぞれの要素を <expr> で評価していきます。実行にあたっては、実行変数 # にそれぞれの要素の値を代入していきます。

Example:

a=["this","is","a","list"];
forall(a,println(#))


このコードの実行結果は次のようになります。

this
is
a
list




全要素走査: forall(<list>,<var>,<expr>)



説明: forall(<list>,<expr>)と同様ですが、実行変数を <var> にします。




式の適用: apply(<list>,<expr>)



説明: この演算子は、操作 <expr> をリストのすべての要素に適用し、その結果からなるリストを作成します。通常、 # が実行変数で、リストのそれぞれの要素がこの変数に代入されていきます。

例:

式: 結果:
apply([1, 2, 3, 4, 5],#^2) [1, 4, 9, 16, 25]
apply([1, 2, 3, 4, 5],#+5) [6, 7, 8, 9, 10]
apply(1..5, [#,#ˆ2]) [[1, 1], [2, 4], [3, 9], [4, 16], [5, 25]]




式の適用: apply(<list>,<var>,<expr>)




説明: apply(<list>,<var>)と同様ですが、実行変数を <var> にします。





リストの要素の選択: select(<list>,<boolexpr>)




説明: この演算子は、特定の条件を満たすすべての要素を選び出します。条件は <boolexpr> によって与えられます。この条件は <bool> 値をとります。 通常、 # が実行変数で、リストのそれぞれの要素がこの変数に代入されていきます。

例:

式: 結果:
select(1..10, isodd(#)) [1, 3, 5, 7, 9]
select(0..10, #+# == #ˆ2) [0,2]


select 演算子の高度な応用例を次に挙げます。

divisors(x):=select(1..x,mod(x,#)==0);
primes(n):=select(1..n,length(divisors(#))==2);
println(primes(100))


結果は次のようになります。

[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97]


この例では、まず最初の関数 divisors(x)x の約数を残らずリストアップします。 次に、関数 primes(n)1 から n までの数の中から約数が2つだけ(1と自分自身)である数を選び出します。すなわち、それが素数です。



リストの要素の選択: select(<list>,<var>,<boolexpr>)




説明: select(<list>,<boolexpr>) と同様ですが、実行変数を <var> にします。

Contributors to this page: Akira Iritani .
Page last modified on Tuesday 06 of March, 2012 [10:18:35 UTC] by Akira Iritani.

The content on this page is licensed under the terms of the License.


Menu
free viagra samplehentai girlsmature pussymilfseeker cialis samplescam clip movie nude webcammother incest order viagra online cialis ukanime rapeparis hilton phone numbers viagra alternatives cialis forum cialis free samplehot girls in pantiesmonster of cocks discount cialis cilias free viagra samplesfree chat rooms cilia structurefree cartoon sex comics buy cialis order viagrafree adult videosplump girl gallerypantyhose gallerycum on her face cheapest cialisbisexual moviestampa bukakehuge black cock thumbnails buy cialis onlineporn star cialis drugwomen having sex cheap generic viagra alternative to viagra natural viagra cheap viagraoral sexteen webcam strip videosnude spanish girlserotic sex cams movies viagra side effectscartoon adultdisney sex animenude blonde hairygang bang swinger cialis viagrabisexual free moviesgay twinkswebcam chat live xxxyoung teens order cialislatina girls thongscum loversjapanese girl viagra cheapyoung japanese girlsmr chews asian beavergangbang squadshoshone indiansmature wiveslive webcam chat girlsfree ebony viagra on lineasian ladyboysteen boys viagra pillsself bondage techniques cailisincest familyfree ebony cheap cialisgay amateur cialis genericbusty asian viagra onlinemature breasts viagra for women free viagrabig boobies cialis generic viagragloryhole gaylatinas in thongs female viagraindian tits viagra 6 free samplesamateur upskirt viagra alternativefree xxx video cialis online discountgalleries of teen girls cialis dosage cheap generic cialisparis hilton pornopussy cat dollsbrutal sexgay peopleblack milfsno tits discount viagrablonde hairy pussyshemale animefree hardcore moviesmom strips for sonfat titscelebrity legsdouble anal levitra vs cialis cialis tadalafil cialis cheapgay bdsmcelebrities exposed viagra generic alternatives to viagra viagra canadabestialitypink porn stars viagra jokesclips of teen sexchicks suck horse cock online viagrasex with horsespainful analglory holes floridafree american bukkake cialis online buy viagrabig cock cum free cialisteen gay porn cialis side effects herbal viagra best price viagra purchase cialis cialis soft tabs cialis vs viagrafree fat girl webcamfree porn movie clipsoral penis suckingebony hardcore viagra pricepantyhose crossed legs cialis and levitralesbiennesblonde boobs buy viagra online