タグ付けされた質問 「clojure」

Clojureは、関数型プログラミングスタイルを奨励し、マルチスレッドプログラミングを簡素化する対話型開発をサポートする汎用言語です。

2
Haskell / Clojureは、実際には粒子シミュレーションなどの動的システムには適していませんか?
以前の質問で、関数型プログラミング言語は物理エンジンなどの動的システムには適していないと言われています。これは、主にオブジェクトの変更にコストがかかるためです。このステートメントはどの程度現実的ですか、そしてその理由は何ですか

1
Clojureで「ref」の履歴にアクセスする
refのドキュメントには:max-historyオプションが示され、「refは読み取り要求を処理するために必要に応じて動的に履歴を蓄積する」と記載されています。REPLには履歴があることがわかりますが、refの以前の値を見つける方法はわかりません。 user=> (def the-world (ref "hello" :min-history 10)) #'user/the-world user=> (do (dosync (ref-set the-world "better")) @the-world) "better" user=> (let [exclamator (fn [x] (str x "!"))] (dosync (alter the-world exclamator) (alter the-world exclamator) (alter the-world exclamator)) @the-world) "better!!!" user=> (ref-history-count the-world) 2 おそらくthe-worldの値は「hello」、「better」、「better !!!」です。その履歴にアクセスするにはどうすればよいですか? その履歴にアクセスできない場合、後で照会できる値の履歴を保持するデータ型はありますか?それとも、なぜデータベースが作成されたのですか?
9 clojure  stm 

9
機能開発のためのOSの選択[終了]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 4年前休業。 私は主に.NET開発者なので、通常はWindows / VisualStudioを使用します(つまり、私は甘やかされています)が、Haskellや他の(ほとんどの場合は機能する)言語を余暇に楽しんでいます。 Haskellの場合、windows-supportは問題ありません(Haskell-Platformを入手できます)が、latley基本的なClojure / Scheme環境をセットアップしようとしたところ、Windowsでの面倒な作業でした。 それで、私はより良いツールと言語サポートのために別のOSを試すことを考えています。もちろん、MacOSやLinuxディストリビューションが残っています。 私は以前にMacOSを使用したことがなく、もちろんLinuxの方が安く(無料)、通常のPCハードウェアでMacOSを並列起動できないと思います(できますか?)。プラス:私がそれらの(私にとって)外部のOSで使用できるツールについての手がかりはありません。 簡単に言うと、Haskell、Clojure、Scala、Schemeをさらに探索したいのですが、もちろん、JavaScript / HTML5 / Cssに少なくとも優れたツールが必要です。.NET / Mono / F#のサポートは素晴らしいですが、これについてはまだWin7ブートを使用します。 だから私は知りたい:-あなたの好きなOS、ディストリビューションは何ですか(Ubuntuは実行可能ですか?)-どのエディター/ IDEを使っていますか? ご協力ありがとうございました! PS:これがこの質問に適切な場所かどうかはわかりませんが、確かにそうだと思います。そうでない場合は、これをどこに移動すればよいか教えてください(StackOverflowは適切な場所ではないようです)

3
関数型プログラミングで条件付きブランチを取り除くにはどうすればよいですか?
実行時間の長いswitchケースまたはif-else-if構文は、適用可能な場合はどこでも、ポリモーフィズムを使用してOOPで回避されます。 値を突き合わせて分岐する代わりに、分岐はクラスレベル自体で行われます。 関数型プログラミングのパラダイム、特にClojureで同様のアプローチをどのように適用できますか?

5
Clojureの構文はScalaの構文よりも本当に単純ですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、専門知識によって裏付けられると期待していますが、この質問は、討論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 6年前休業。 常にClojureを支持して行われる議論はそれです。 構文はより単純で、複雑なルールなしでコードを表現する方法は1つだけです。 ただし、Scalaには、Clojureと比較して、さまざまなタイプの構文と構成体がロードされています。 しかし、Clojureを学ぼうとしている過去1週間から、組み込みマクロのリストが無限であることに気づきました。同じ括弧構文でそれらを書いたとしても、それぞれがどのように機能するかを学ぶ必要があります。 では、どのような意味でClojureの構文は単純なのでしょうか。LISPerにとってはそうかもしれませんが、Scalaでさまざまな構成を学習するさまざまなバックグラウンドを持つ人々にとっては、より簡単に思えます。 中立的な観点から、どの構文がよりシンプルで読みやすいですか?
8 scala  clojure 

4
スケーラビリティ(マルチコア)の理由からPythonではなくClojureを使用するのは良い考えですか?[閉まっている]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ソフトウェアエンジニアリングスタック交換のトピックになるようにします。 4年前休業。 http://clojure.org/rationaleと、Clojureと多くの言語の間の他のパフォーマンス比較を読んだ後、使いやすさを除けば、Pythonではなく、Clojureでコーディングするべきだと思い始めました。実際、私はClojureを学ばないことに無責任であると感じ始めました。 それは意味がありますか?Lisp方言や他の関数型言語よりも、Pythonなどの命令型言語を使用して、すべてのコアを本当に効率的に使用できないのでしょうか。それのすべての利点は不変データを使用することから来るようですが、Pythonでそれを行うだけですべての利点を得ることができませんか? 私はかつてCo​​mmon Lispを学び始め、大学図書館から借りた本からほとんどすべての演習を読んで実行しました(Amazonでの人気が低いにもかかわらず、かなり良いことがわかりました)。しかし、しばらくして、簡単なことをするのに苦労しすぎた。本質的にもっと不可欠なものがあり、それらを機能的な方法でモデル化することが困難になると思います。 では、この新しいマルチコアの未来を利用するアプリケーションを構築するために、PythonはClojureと同じくらい強力ですか? セマフォ、ロックメカニズム、または他の同様の同時実行メカニズムを使用することは、Clojureの「自動」並列化に代わる優れた方法ではないと私は思います。

1
「コア」の基本を超えて学ぶために不可欠なClojureライブラリは何ですか[終了]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 5年前休業。 私は自分にClojureを教えています。私はライニンゲンを使い始めました。私はClojure Koansに取り組んでいます。次にLabREPLを実行する予定で、Noirを調べます。 私の質問は次のとおりです。上記の学習計画でカバーされているものを超えて知っておく必要のあるClojureのライブラリと関数は何ですか? Clojure Contribを見ると、多数のライブラリがあります。プロ(またはOSS)Clojure開発者として、日常的にどちらを使用していますか?どれがそれほど有用ではないか、そうでなければ一般的に使用されないか(つまり、難解であるか、日常のコーディングで頻繁に登場しない)。

3
関数ではなくマクロが必要になるのはいつですか?
私はClojureを初めて使用し、Macrosを初めて使用します。Lispの経験はありません。私はフォームのような自分のスイッチケースを作成し続け、これで終わりました: (defmacro switch-case [v cases default] (if (cases v) (cases v) default )) そして、関数を作ってみて、これで終わりました: (defn fn-switch-case [v cases default] (if (cases v) (cases v) default )) どちらも (switch-case 5 {6 "six" 7 "seven"} "not there") そして (fn-switch-case 5 {6 "six" 7 "seven"} "not there") うまくいきます。 マクロが必要で、関数が機能しないシナリオは何ですか?関数やマクロの実装に欠点はありますか?
7 clojure  macros 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.