問題タブ [mercury]
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.
prolog - より興味深いまたは強力なものは何ですか:カレー、マーキュリーまたはラムダ-プロローグ?
スクラッチ/リバースエンジニアから実装するのに、どの正式なシステムがより興味深いかについてお聞きしたいと思います。
論理/宣言型プログラミングシステムの既存のオープンソースプロジェクトをいくつか調べました。私は自分の自由な時間に似たようなものを作るか、少なくとも実装の一般的な考え方を理解することにしました。
これらのシステムのいくつかが、論理とその計算モデルとの関係における現代の学術調査の表現力と簡潔さのほとんどを提供するならば、それは素晴らしいことです。
少なくとも概念レベルで何を勉強することをお勧めしますか?たとえば、Lambda-Prologは、特に高次の関係を可能にするため興味深いものですが、AFAIKは直観主義論理に基づいているため、排中律の原則がありません。それは一般的に私にとって不利です。
また、あまり人気がないが、より表現力豊かで強力な最新の論理プログラミングシステムについての提案を歓迎します。
logic - MercuryのADTプロパティ
Mercury(10.04)が次のスニペットの決定論を推測できない理由をさまよいます。
それは文句を言う:
しかし、io.res
持っているのはio.ok/1
とだけio.error/1
です。
そして、次のコードスニペットはうまくコンパイルされます:
アップデート#1:次の場合でもdetを決定できます:
typeclass - Mercury言語の型クラスのポリモーフィックインスタンス
次の宣言を検討してください。
マーキュリー(10.04)は以下を生成します:
関数従属性がなくても、型変数を使用してインスタンスを宣言することはできません。
私は何かが足りないのですか、それともMercuryはグラウンドインスタンスで終わらないインスタンスを許可していませんか?
(制約なしで)任意の型のラッパーであるポリモーフィック型のインスタンスを宣言する方法はありますか?たぶん、?のような特別な型クラスが存在しますall_types(T)
か?
mercury - Mercury でリストをタプルのリストに変換する
私は水銀の初心者であり、この問題を解決するのは難しいと感じています. リストを、頻度の低いものから高いものへとソートされたタプルのリストに変換したいと考えています。例えば:
タプルのすべてのリストが頻度の低いものから高いものへと並べ替えられていることがわかります。
誰かがそれを愛するのを手伝ってくれるか、それを行うためのより多くのヒントを見つけることができるチュートリアルへのポインタを求めています.
お返事をありがとうございます。
ide - Mercury をサポートする IDE またはエディタ
emacs 以外に Mercury をサポートする IDE やエディタはありますか?
unification - Mercury の ":=" と "=>"
最近、Mercury で次のコード例を見つけました。
Prolog プログラマとして、通常の統合=
と、ここで使用されている:=
orの違いは何だろう=>
か?
Mercury リファレンスでは、これらの演算子の優先度は異なりますが、その違いについては説明されていません。
lambda - Mercury:高次データ型の決定論を宣言する方法は?
以下のMercuryコードをコンパイルすると、コンパイラから次のエラーが発生します。
コンパイラが言っているのは、「型を宣言したときtest_case
、決定論を指定しなかったので、意味があると思いましdet
た。しかし、semidet
ラムダを渡した」と思います。
私の質問:
- 型の決定論を宣言するための構文は何ですか?私が試した推測はすべて構文エラーを引き起こしました。
- 誰かがのインスタンス化の
/* unique */
部分が何を意味するのか説明できますか?TestCase
それは、与えられたインスタンス化と期待されるインスタンス化の間に不一致を引き起こしますか? - でラムダを宣言するためのより冗長でない方法はあり
main
ますか?ラムダ内のコードと同じくらい、ラムダに関する宣言があります。
コード:
pattern-matching - Mercury: 決定論とパターンマッチング
私は半決定論的な機能を持っています。if ステートメントの代わりにパターン マッチングを使用するように書き直すと、Mercury は非決定論的になると言います。理由が知りたいです。
元のコード:
改訂されたコード:
私は、SML でのパターン マッチングについて考えるのに慣れています。A の場合の 0 は、B の場合の N が 0 でないことを保証します。Mercury の動作は異なりますか? N が 0 の場合でも、ケース B が呼び出される可能性はありますか? N \= 0
(述語を半決定論的にするためにケース B に節を追加しましたが、うまくいきませんでした。)
半決定論的でもあるパターンマッチングでこの述語を書く方法はありますか?
mercury - Mercury での無制限の変数名宣言
可変数の値と名前を持つことができるデータ型を Mercury で宣言したいと思います。例えば :
3 つの変数/値があります。
私は次のようなものが欲しい:
これは、制限または固定されていない変数の数です。
したがって、 myplayer を使用して値/変数をv1, v2, v3 and v4.
次のように宣言できますa, b, c, d, e, z, aa, ab and az
。
値の数は制限されず、名前も固定されていません。
私は水星の新人です。
mercury - 水銀のインストール
私はすでにhttp://www.mercury.csse.unimelb.edu.au/download/release.htmlから Mercury 11.07.1 をダウンロードしています 。
また、Windows 7 PCにcygwinをインストールしました。しかし、私は水銀をインストールする方法がわかりません。インストールガイドを手伝ってくれる人はいますか?