Lush (プログラム言語)

 は LISP にオブジェクト指向の機能を加えた言語処理系であり、機械学習ソフトウェアのためのスクリプト言語として開発された。機械学習には数値計算によるもの、GUI を備えるものなど多数合ったが、 はより汎用であり、オペレーティングシステムなどのシステム寄りの記述もでき、ネットワーク・プログラミングや計算機管理といったアプリケーションにも対応している。 で書かれたプログラムはC言語に変換され、多次元配列処理エンジンが組み込まれる。 の開発はオープンソースプロジェクトとして続けられており、GPL にしたがった利用、配布が認められている。 には、多くのライブラリ (ALSA、BLAS、FFTW、（GSL）、HTK、LAPACK、MPI、、、SDL、 など) を利用するためのインターフェイス (C言語および 自身で書かれている) が用意されている。 プロジェクトの創始者 、ヤン・ルカン は、実行環境として 準拠のシステム（、系のオペレーティングシステム)、、、 を想定し、 で開発を続けている。言語の名前「」は「統合シェル」を意味する英語の「」に由来する。 
機能.
ヘルプ.
Lush はコマンドライン・インターフェイスでの対話的な動作により、簡便な入出力ができる。
ヘルプを表示するには、コマンドライン・インターフェイスで以下のようにする。
? (helptool)
ディスプレイ上にマニュアルやチュートリアルを表示するウィンドウが開かれる。
コマンドライン・インターフェイス内で関数の解説を見るには、以下のようにする。
?^Adraw-line
こうすると、codice_1 関数のヘルプが表示される。
配列操作.
N-次元の多次元配列と、LISP 風の書き方の両方を同時に使うことができる。
値の設定と参照.
? (defvar m (matrix 2 3)) ;; 多次元配列の定義
? m ;; 配列の表示
= 0.00 0.00 0.00 ]
 [ 0.00 0.00 0.00 
? (m 1 2 5) ;; (1,2) の要素の値を 5 に設定
= 0.00 0.00 0.00 ]
 [ 0.00 0.00 5.00 
? (m 1 2) ;; 要素 (1,2) の値を表示
= 5
スライス.
? (select m 1 2) ;; 1次元目の方向での二つ目のスライスを選択
= [ 0.00 5.00 ]
? (narrow m 1 2 1) ;; 1次元目方向のサイズを 2 に縮小し、オフセットを1 にする
= 0.00 0.00 ]
 [ 0.00 5.00 
リスト.
配列は、その配列と同じ構造を持ったリストに変換でき、またリストから配列を生成することもできる。
? (m () () (range 6))
= 1.00 2.00 3.00 ]
 [ 4.00 5.00 6.00 
? (m () ())
= ((1 2 3) (4 5 6))