問題タブ [declarative-programming]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
7 に答える
435 参照

java - 命令型 Java を関数型 Java に変換する (ゲーム)

私は Java 8 とその機能についてさらに多くのことを学んでおり、Java 8 を使ってもっと練習したいと思っていました。たとえば、画面の境界を円で囲むための次の命令コードがあるとします。

  1. それを「機能化」しようとするとどうすればよいですか?多分いくつかの疑似コード?可変性と状態は、この例に固有のもののように思えます。
  2. 関数型プログラミングはゲーム開発に適していませんか? どちらも好きなので、合わせてみました。
0 投票する
3 に答える
861 参照

prolog - Prolog ルールのゴール (ステートメント) の順序

私は最近 Prolog を勉強し始め、1 つの奇妙な問題に直面しました。ここでは、関係のツリーと 2 つのタスクのソリューションを提供するコード例 (私はSWI-Prolog 7.2.3を使用しています)を見ることができます。

dave の親戚を取得したいときは、次のようにします。

次に、相対次の方法の定義を変更します。

最後のステートメントの目標の順序を変更するだけです。そして今、私は次の出力を持っています:

出力に dave が表示されます。どうしてそうなった?私は X \== Y と書きました... 誰かこれについて良い説明をしてくれませんか?

そしてもう1つ質問です。プログラムで同じ答えを書かないようにするにはどうすればよいですか?

ありがとうございました!

0 投票する
0 に答える
43 参照

java - ソフトウェア変更契約の構造的規則性の検証

特定のソフトウェアの 2 つのバージョン間の構造的規則性 (構造的規則性はソース コードで従わなければならない規則) の変更を見つけ、最新バージョンが構造的規則性に違反しているかどうかを確認できるツールを作成するプロジェクトを行っています。古いバージョンの。

私はEKEKO(Eclipseワークスペースに対するClojureライブラリメタプログラミング)と呼ばれるクエリ言語を使用しています。使用する述語を作成しました。また、2 つのバージョンの違いを見つけることができます。

しかし、私の問題は、たとえば、古いバージョンで呼び出されたすべてのメソッドtoStringに新しい名前を付ける必要があると言う方法を見つけることですprint。したがって、この場合、新しいバージョンが構造上の契約 (命名規則について) を満たしているかどうかを確認する必要があります。

前のコードでは、プロジェクトの 2 つのバージョンの違いを取得できます。私がする必要があるのは、次のコードのようなものです。

projectResults は、指定されたプロジェクトに Ekeko 環境を適用し、指定された述語 (この場合は f1 と f2) の結果を見つけます。

しかしまた、異なるプロジェクトで同じクラスが同じであることを意味しないため、比較操作には注意が必要です。

先に進むのに役立つアイデアはありますか? 前もって感謝します!

0 投票する
3 に答える
1112 参照

prolog - PROLOG のディープ リバース - リスト

PROLOG の入れ子になったリストでディープ リバースを生成するための述語を作成しようとしています。

現在、私はこの述語を取得しました

結果は次のようになります。

問題は、内側の List が反転されていないことです。次のようになります。

助けてくれてありがとう。

0 投票する
1 に答える
140 参照

prolog - 再帰と組み合わせたメンバー

私は大学で Prolog を学び、自宅でのエクササイズ中に奇妙なことに出くわします。私は、はるかに大きなプログラムの一部である次の Prolog 節を書きました。

次の事実を使用します。

高速道路は、最初の 2 つの引数で 2 つのノードを記述し、3 番目の引数でエッジを記述する事実として見ることができます。すべての事実が一緒になって、接続されたグラフを形成します。

句edgeListを使用して、ノードごとにエッジをリストしたい

しかし、クエリを書くと:

次の結果が得られます。

何らかの理由で、メンバー述語が正しく使用されているにもかかわらず、Prolog は結果リストの末尾を空のリストと統合しません。これは、さまざまな演習で数回発生したことであり、何が間違っていたのかを知るのは良いことです...