問題タブ [clojure.spec]

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 投票する
1 に答える
285 参照

clojure - clojure.specのexercise-fnの動作に問題がある

仕様ライブラリを使用しようとすると、exercise-fn を使用しようとするとエラーが発生します。これを変更せずに、メインのガイド ページに投稿された例に減らしました。

関連コード:

ここで、次のように入力します

エラーが発生します:

使用される依存関係/バージョン、[org.clojure/clojure "1.9.0-beta3"] [org.clojure/tools.logging "0.4.0"] [org.clojure/test.check "0.9.0"]

なぜこれが壊れているのか、誰にもアイデアがありますか? ありがとう。

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

clojure - Clojure とコンパイル時の仕様チェック

私は関数仕様で遊んでいますが、それを使用してコンパイル型チェックをエミュレートできるかどうか疑問に思っていますか? マクロはコンパイル時に評価されるため、次のようなことができるとします。

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

clojure - Clojure 仕様の解析の問題

私はいくつかのプログラミング言語の演習に取り組んでおり、仕様を使用して言語構文を定義して解析しようとしています。コードは以下のように簡単です。しかし、サブ式で正しく解析する方法に問題があります。

これまでのところ、基本的な式をうまく解析できます。お気に入り(s/conform ::expr (pgm "let x = 7 in x"))

しかし、 let 式の例では、最後の x を複雑な式 に変更(s/conform ::expr (pgm "let x = 7 in let y = 8 in y"))すると、次の説明で解析が失敗します。

In: [6] val: (y = 8 in y) fails spec: :eopl.let-spec/let-exp at: [:let-exp] predicate: (cat :let #{(quote let)} :id :eopl.let-spec/var-exp :eq #{(quote =)} :exp1 :eopl.let-spec/expr :in #{(quote in)} :body :eopl.let-spec/expr), Extra input

先読みや再帰的適合を適切に行うことができないようですか?それとも、ここで構文を間違って定義していますか?

Specで正しく解析できるようにするには、これをどのように解決すればよいですか?

前もって感謝します。