何をパワフルといっているのかは人によって違うと思いますが、私は 統一性 と 自由度の高さ にあると思います。
Lisp のコードは すべてが式 の形式で統一され、 関数、演算子はもちろん、制御文も式です。
(message "Hello") ; 関数 (+ 1 2) ; 演算子 (if 1 t nil) ; 制御文
制御文も自分で作れるので、言語の構文を変えることができます。
これにより、 DSL といわれるような特定用途向けの言語も Lisp の言語を改造することよって作ることができます。
さらに、 Lisp では コードとデータも同じ 形式です。
Lisp ではデータの格納にリストが使われますが、これを評価すれば式となります。
(+ 1 2) ; コード '(+ 1 2) ; 評価しない(クオート)とデータ (eval '(+ 1 2)) ; データも評価すればコード
プログラム中で扱っているデータをコードとして使えるので、動的にプログラムを変えていくことができます。そのコードも統一されているので、結構なんでもできます。
プログラムが自分で自分を成長させていけるので、人口知能に使えるのではないかといわれていました。ただ、人口知能自体難しいので、最近はほとんど聞きませんが。
プログラムがプログラム自身を知っていて操作できるようなことを メタプログラミング といいます。
Rails では短いコードでサービスを作ることができますが、これは Ruby のメタプログラミング性の高さによるところが大きいです。 Lisp はそのもっとすごいの といった感じです。
自由度高くいじれるのは危険が伴う両刃の剣なので、 Ruby や最近の Clojure では制限をつける傾向にありますが、パワフルはパワフルだと思います。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。