下のコードを参照してください。エラーの内容はかなりわかりましたが、キーがタプルのときにアンダースコアを使用してPSQを照会する簡単な方法があるかどうかは疑問です。少なくともそれは非常に魅力的に見える:D。Data.PSQueue:式コンテキスト内のパターン構文:_
main :: IO()
main = do
time <- getCPUTime
let qTuple = ("mine", 3455, msgs)
let rrq = PSQ.singleton qTuple time
let r = PSQ.lookup ("mine", _, _) rrq
print (r)
結局私は、IPv4アドレスとその作成日時順に(しばらくして)キューイングを解除する必要があるTCPポート番号宛てのメッセージがあります(IPv4の、tport)、(MSG、CTIMEを)。一方では、任意のタプル(IPv4、tport)のキューが存在しているかどうかを問い合わせることができます。必要に応じてこのようなキューを作成するか、期限切れにする必要があります。
何をあなたの例では、優先度になると、何がキーになります?この場合、タプルは優先度を表していると私は理解していますか?キューから取り除かれる順序は何ですか? –
おっと - 私はPSQがマップではないことを忘れていました。 – ehird
しかし、自分のデータ型を定義しておけば、その中に優先度を入れ、 'compare = comparison priority'のような' Ord'インスタンスを与えることができます。これにより、PSQルックアップからデータ型全体を取得できるようになりますが、一部の人は 'a == b'を持つことに反対しますが、' b == EQを比較しません。 – ehird