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 よりかなり豊富に揃っています。

do-until
do-while
doargs
dolist
dostring
dotimes
dotree
for
until
while

 CommonLISP だと dotimesdolistloopdo の4つですから、その差は歴然。使うかどうかは別ですが、、、
 dolistdotimesforuntilwhile は説明するまでもなく、大体ご想像通りの動作です。
 do-untildo-while は本体を評価してから、評価式を評価します。つまり untilwhile と評価式の評価タイミングが逆になります。
 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"
> 

 と、こんな感じ。

 以上、如何でしょうか?