質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
LISP

LISPはプログラミング言語の一種であり、関数型言語に分類されています。 特徴として、括弧を多様する独特の構文を持ちます。

Q&A

2回答

3325閲覧

Lispがパワフルと聞いたのですが

a

総合スコア129

LISP

LISPはプログラミング言語の一種であり、関数型言語に分類されています。 特徴として、括弧を多様する独特の構文を持ちます。

0グッド

4クリップ

投稿2014/08/21 15:19

最近Lispが気になっていてぐぐってるのですが,括弧が多い,パワフルとの情報が多く見つかります.

括弧が多いというのはemacsのカスタマイズで遊んでいたことがあるのでとてもわかるのですが,パワフルのほうはどうパワフルなのかいまいちピンときません.

Lispがパワフルである例はなにかありますでしょうか?

解答よろしくお願いします.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

何をパワフルといっているのかは人によって違うと思いますが、私は 統一性自由度の高さ にあると思います。

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 では制限をつける傾向にありますが、パワフルはパワフルだと思います。

投稿2014/08/22 03:40

yohshiy

総合スコア863

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

普通のプログラム言語では、「プログラム」とそれが扱う「データ」は全く別物ですが、LISPの場合はプログラムもデータも「S式」という同じ形で表されます(カッコだらけのあれです)。

つまり、「プログラム自体の処理を行うプログラム」も、通常のプログラムと同様に書けてしまうという、他の言語にはない特性を持つことになります。

多くのLISP実装では、「マクロ」という形でプログラム自体への処理を実装していまして、文法拡張のようなことまで平然とできてしまいます。

投稿2014/08/22 01:16

maisumakun

総合スコア145121

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問