2012-02-15 4 views
2

私は、Lisp(あらゆる方言)がプロジェクトに提供する具体的でユニークな機能を、他の主に機能する言語に比べて探しています。なぜプロジェクトにLispを選ぶのですか?

例えば、Haskellはレイジー評価、純度、より正確なプログラムを構築するのに役立つタイプシステムを提供しています。 Erlangは、メッセージの排他的なやりとり、軽量プロセスなどを使用することにより、並列プログラミングを容易にします。

LISPは何をテーブルに持ち込みますか?特定のプロジェクトで他の言語より優れたスイートになるのはなぜですか?それを他の言語には適さないという特徴は何ですか?

私はLispでバッシングしていません。私はそれについてもっと学びたいと思っています。具体的にしてください:)

+0

具体的なプロジェクトの説明が付いていれば、これはプログラマーのためにもっと適していると思います.stackexchange.com – pmr

+0

はい、私はこれがプログラマーズの方が良いことを認識しました。私が投稿した直後に:質問と仲裁者がすぐにそれを移動することを願ってフラグを付けました – Adi

答えて

1

私はあなたに似た私の自己の質問を尋ねられたとき、私は検索し、見つかったこの記事を:

それは細部にあまり行かないが、なぜLispが理にかなっているかについての粗い画像が得られます。私はそれが非常に有用であることを発見しました(そしてその点についてはhttp://www.defmacro.org/サイト全体 - 投稿のように多く、例えばthis one)。

+0

リンクは間違いなく面白いですが、 ..それは、他の言語で可能な関数型プログラミングの利点を提示する(例えば、Haskellは特にDSLのために宣伝されている)。私の質問は、Lispが機能的なパラダイムの中で新しいものをもたらすものです。あなたがLispの方言にあなたのプロジェクトを書こうとするキラー機能は、他の言語では見つけられないからです。 – Adi

+0

それはポイントです - 私の意見では、そうではありません。セクション 'Hello Lisp!'と 'Lisp Macros'はこれが最高だと思います。どのようなLispがあるか - code = data、マクロを可能にします。これにより、あなたのニーズに合わせてLispを調整することができます。これはLispに特有のことですが、それはあなたが自由にそれを作ることができます。それはまた非常に簡潔です - 特にClojure、あなたは他の言語よりもはるかに短いコードを作る多くの方法があります。また、Lispはデフォルトでは機能しません(例えばHaskellと比較して)、あなたはそれを喜んで喜んで使用することができます。 –

+0

こちらもご覧ください:http://www.paulgraham.com/avg.html –

1

HaskellはClojureのシーケンス機能は怠け者です遅延評価に

を提供しています。あなただけのハスケルのように無限のリストを操作することができます

Clojureのタイプは不変で

(take 10 (cycle ["odd" "even"])) 

純度。これにより、プログラムの大部分が純粋に象牙の塔を登ることなく純粋になります:)さらに、それにはhaskellのようなSTMがあります。残念ながら、ここで

と型システム

はハスケルと競合することはできませんのLisp。 Mostsリスプは動的です。

しかし、lispの動的な性質とそのVM(イメージ)は、Webアプリケーションのようなサーバー側のプログラムにとって素晴らしい選択です。 Webアプリケーションの実行中のインスタンスに接続したり、アプリケーションを再起動したり、ユーザーを追い出すことなく、ファンクションやモジュール全体を即座に変更することは非常に簡単です。これは、haskellでは不可能か非常に面倒です。

ほとんどのスクリプトは、マクロを書くのに非常に簡単な方法です。あなたは同じ言語でマクロを書く。

ハスケルでは、はるかに複雑なもう1つの言語(テンプレートハスケル)を学ばなければならないでしょう。今日まで、適切に文書化されていません。あなたはそれを学ぶのに苦労します。

私はlisp(clojure)とhaskellの両方を使い、愛しています。実用的な開発言語の中で最も強力なタイプのシステムを持っているので、私はhaskellを好む。

プラスそれはSchemeはhygenic macroscontinuationsを提供:)

+0

私は本当にあなたの答えが気に入ります:)ありがとうございました!しかし、私はまだLispのためのキラー機能、それはあなたがそれにプロジェクトを書くことをWebアプリケーションのために、見ることができません。例えば、Erlangは、ホットスワップ可能なコード、100%の稼働時間などをサポートするように特別に設計されています:)これは、webappsのバックエンドを書き込むことが本当にいいです。 – Adi

0

キノコより良いあなたの心を曲げます。私は他のどのようなfp言語もこれらの機能を提供しているのか分かりません。

+0

MLの方言の中には、衛生的なマクロは、一般的なlispスタイルの純粋なマクロに劣ります。衛生的なマクロは、哀れなC++テンプレートほど強力ではありません。 –

+0

@ SK論理 '構文規則'は 'defmacro'よりも強力ではありません。しかし、 'syntax-case'は' defmacro'よりも強力です(ANSI CLの 'defmacro'を' syntax-case'で簡単に実装できますが、逆もできます)。 –

+0

@Matthias Benkard、あなたは 'syntax-case'(これはR6RSで公式にしか現れませんでした)で衛生を迂回することができるので、衛生的なマクロシステムではありません。純粋に衛生的なマクロシステムは常に柔軟性に欠けます。 Btw、 'defmacro'の上に' syntax-case'を実装することもできますので、 "もっと強力"ではありません。 –

関連する問題