私はちょうどパッケージのOneTupleをハックしました。私はそれが目的であることを知りたがっていますが、著者はそれを楽しくするために作成していないと確信しています。だからいつこれが役に立つの?それが何をしているのかははっきりしていますが、誰がそれを使うのかは分かりません。OneTupleはいつ使用しますか?
だから、誰もがこの恩恵を受けることができる素晴らしい例を知っていますか?あるいは、数学的な美しさを背後に見せてもらえますか?
私はちょうどパッケージのOneTupleをハックしました。私はそれが目的であることを知りたがっていますが、著者はそれを楽しくするために作成していないと確信しています。だからいつこれが役に立つの?それが何をしているのかははっきりしていますが、誰がそれを使うのかは分かりません。OneTupleはいつ使用しますか?
だから、誰もがこの恩恵を受けることができる素晴らしい例を知っていますか?あるいは、数学的な美しさを背後に見せてもらえますか?
はOneTuple
がdata
代わりにnewtype
を使用するので、それは追加のボトム値を有することを除いて、一般的にモナド変圧器スタックのベースとして使用されるIdentity
モナド、ほぼ同じです。
これは、実装しているほとんどの型クラスの最も単純な例であるため、面白いです。私はそれのための実用的な使用の多くは、表示されません。
私は、インサイドの追加層を作成する際にのみ、実際の使用方法を見ています。 – fuz
タプルで動作する(少しばかげた)タイプクラスがあるとします。 (a,a)
のインスタンス、(a,a,a)
のインスタンスがあります。単一の値のインスタンスも必要です。しかし、他のすべてと重複するので、a
のインスタンスを作ることはできません!ただし、OneTuple a
のインスタンスを作成することはできます。
typeclassはちょっと役に立たないですが、ほぼ同じようなtypeclassを想像するのは簡単ですが、もっと便利です。実際には、これは正確にBOS' mysqlのライブラリでOnly
の使用である:http://hackage.haskell.org/packages/archive/mysql-simple/0.2.0.2/doc/html/Database-MySQL-Simple-QueryResults.html
これはアイデンティティモナドの実装は冗談ではありません同じように、最も確かない冗談です。プレーンタイプa
とは異なり、すべての有益なインスタンスが得られます。追加ボトムを取得すると、シングルトンタプルは他のタプルタイプのセマンティクスに非常に近くなります。
この場合のユースケースの1つは、同一性モナドと同様に、一般化です。あなたは多型ファンクタ型を持つアプリケーション/モナド関数を持っています。例えば、列挙子のような多くの有用なパッケージは、ユーザーが選択したモナドを操作することをサポートしています。 の少し異なるセマンティクス(Identity
と比較)は、複雑なデータ依存関係を持っている場合や、追加の怠惰を利用したい場合には非常に便利です(Identity
)。
"私は作者がそれを楽しむためだけに作成していないと確信しています" - ここでは、ハスケルコミュニティのユーモアセンスを過小評価しているかもしれません。 – MatrixFrog
カエルと言ったこと。既存のパッケージの実際の理由がないパッケージの例については、acmeパッケージカテゴリを参照してください。 –