Archive for 2013年5月|Monthly archive page
newLISP マニュアル v.10.5.0 日本語訳公開
今回のバージョンアップのメインは、何と言っても、桁数制限の無い整数(マニュアルでは〝大整数〟と記述)、無敵の数値演算性能です(笑)。
個人的にうれしいのは、廃止予定になっていた local が復活したこと。
ということで、マニュアル類の日本語訳をアップしました。
newLISP の User Manual and Reference と Code Patterns と GUI functions の全訳のリリースです。
newlisp_manual-10500
CodePatterns-10500
guiserver_manual-150
こちらからダウンロードしてください。
目次も含め日本語併記にしてあります。
Lutz氏のご好意によりこちらから見ることもできます。
いつものように、間違いやおかしな点が有りましたら、こちらの blog までご一報下さい。
以上、如何でしょうか?
projecteuler4(その3)...または、newLISP の便利関数
二回に渡る 問題4 は問題の解き方に重点を置き、肝心の newLISP 組込関数の紹介がおろそかだったので、その3です(汗)。
newLISP の繰り返し構文は for文を始め、CommonLISP よりかなり豊富に揃っています。
CommonLISP だと dotimes、dolist、loop、do の4つですから、その差は歴然。使うかどうかは別ですが、、、
dolist、dotimes、for、until、while は説明するまでもなく、大体ご想像通りの動作です。
do-until、do-while は本体を評価してから、評価式を評価します。つまり until、while と評価式の評価タイミングが逆になります。
doargs は関数の引数を1個ずつ評価して繰り返します。ちなみに、newLISP では、関数(ラムダ式)で指定ない引数は全てオプションの変数(CommonLISP の &rest に相当)になります。そこで、この構文が生きてくるわけです。
dostring は文字列を一文字ずつ評価して繰り返します。無印の newLISP では1バイト単位ですが、UTF-8版 newLISP では一文字が多バイトになる場合があるので注意が必要です。無印の newLISP と UTF-8版 newLISP で文字処理単位が異なる関数はこちらに表があります。
残る dotree は newLISP 固有のコンテキストに関する構文で、コンテキスト内のシンボル毎に繰り返します。コンテキストについて語り始めるときりがないので、マニュアルを見てください(笑)。
さて、CommonLISP との比較で言うと newLISP の reverse は破壊的である点が異なっています。ちなみに newLISP の破壊的関数はこちらに表があります。
また、letn は CommonLISP の let* に相当します。
変わったところでは、組込関数bits があります。これの関数は整数値を 1 と 0 の文字列に変換します。
> (bits 6) "110" >
ふ、ふ、ふ、便利でしょう。これと組込関数 select を組み合わせて、前回の binary counting を実装しています。
組込関数 select は、インデックス・リストを使ってリストや文字列から必要な要素だけ取り出せます。
> (select '(a b c d e f) '(0 2 4)) (a c e) > (select "abcdef" '(1 3 5)) "bdf" >
と、こんな感じ。
以上、如何でしょうか?