素数を数えて落ち着くんだ(Pnuts編)
Pnutsでできる限り簡潔、効率無視で書いてみた。(少し修正)
function isPrim(p){ return (list(range(2,p)[function(d) p%d == 0]).size()==1) }function isPrim(p) !range(2,p)[function(d) p%d == 0][1]; for(i: range(2, 100)[isPrim]) print(i,",") [実行結果]: 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,null
Pnutsでは、配列やジェネレータの添え字に関数を指定できる。すると関数の条件を満たす要素で構成されたジェネレータが返って来る。これは結構便利な記法。
filterとか使って、もっと関数型っぽくやりたい人は、functionalモジュールをuseするといいと思う。(あまりくわしくないです。。)
Javaで書いたバージョンもあるけど、あまり特徴が出せなかったので省略。