問題タブ [haskell-hedgehog]
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.
haskell - ラップされた関数の Hedgehog ジェネレーターを作成するにはどうすればよいですか?
私は現在、本Thinking with Typesに取り組んでいます。第 3 章のVarianceでは、著者は、読者が のファンクター インスタンスを実装する必要がある演習を提供しますT1
。
この型チェックを行ういくつかの方法を見つけました。
…と
もちろん、インスタンス型のチェックを行うだけでは、インスタンスがファンクターの法則を尊重するわけではありません。私が書いたインスタンスが正しいことをテストする (そして、上記のインスタンスの少なくとも 1 つが間違っていることを示す) ために、いくつかのプロパティ ベースのテストを書きたいと思います。
自分のテストを書くために、 hedgehog-classesライブラリを使用したいと考えています。このライブラリは、必要になると思われる機能lawsCheck
と機能を提供します。functorLaws
GHCi の次の行でインスタンスをテストできると思います
私が見逃しているのはgenT1
、1つ(またはおそらく複数?実際にはそうあるべきgenT1List
ですか?)のランダムT1
値を生成すると想像する の書き方です。ラップするランダムな値を作成できるように、 hedgehog-fn のようなものを使用して任意の関数を生成する必要がありますか? もしそうなら、どのように?(Int -> a)
T1