Thoughts?

On Mon, Dec 5, 2016 at 4:56 PM, Dave NotTelling <dmp250...@gmail.com> wrote:

> Marcus & Martin:
>
>      I tried the dict_keys() method of checking, but even that can fail.
> Here is an example:
>
> [code]
>
> import pmt
>
> d = pmt.make_dict()
> d = pmt.dict_add(d, pmt.intern('a'), pmt.intern('a'))
> d = pmt.dict_add(d, pmt.intern('b'), pmt.intern('b'))
> d = pmt.dict_add(d, pmt.intern('c'), pmt.intern('c'))
>
> a = pmt.cons(d, pmt.make_u8vector(10, 10))
>
> print pmt.dict_keys(a)
>
> [/code]
>
> You end up with: ((c . c))
>
> The dict_keys() method will bomb if there are no elements in the
> dictionary:
>
> print pmt.dict_keys(pmt.cons(pmt.make_dict(), pmt.make_u8vector(10, 10)))
>
>
> On Tue, Nov 22, 2016 at 5:55 PM, Dave NotTelling <dmp250...@gmail.com>
> wrote:
>
>> Thanks for the explanation!
>>
>> On Tue, Nov 22, 2016 at 5:29 PM, Marcus Müller <marcus.muel...@ettus.com>
>> wrote:
>>
>>> That's a long story. Essentially, a list is a pair of the first element
>>> and a pair of a second element and a pair of the third element and a pair
>>> of …
>>>
>>> Cheers,
>>> Marcus
>>>
>>> On 22.11.2016 23:18, Dave NotTelling wrote:
>>>
>>> I ask because it feels like a bug.  Things like ((a . b), (c . d), (e .
>>> f)) are definitely not pairs (assuming a pair is 2 elements) and (in my
>>> opinion) should not return true for pmt.is_pair().
>>>
>>> On Tue, Nov 22, 2016 at 5:12 PM, Dave NotTelling <dmp250...@gmail.com>
>>> wrote:
>>>
>>>> Martin,
>>>>
>>>>      Was that done on purpose?
>>>>
>>>>      Thank you for the link!  I hadn't thought about checking that way.
>>>>
>>>> Thanks!
>>>>
>>>> -Dave
>>>>
>>>> On Tue, Nov 22, 2016 at 5:08 PM, Martin Braun <martin.br...@ettus.com>
>>>> wrote:
>>>>
>>>>> Dave,
>>>>>
>>>>> pairs pass is_dict(), which is possibly the root cause here. See also:
>>>>> https://github.com/gnuradio/gnuradio/blob/31b28f0cf4694378b2
>>>>> 6617616d08b4082668962f/gr-uhd/lib/usrp_block_impl.cc#L487-L494
>>>>>
>>>>> Cheers,
>>>>> M
>>>>>
>>>>> On 11/22/2016 01:47 PM, Dave NotTelling wrote:
>>>>> > I noticed today that the is_dict and is_pair checks are not
>>>>> appearing to
>>>>> > work properly.  Here is an example that shows the issue:
>>>>> >
>>>>> > [code]
>>>>> >
>>>>> > #!/usr/bin/python
>>>>> >
>>>>> > import pmt
>>>>> >
>>>>> > def print_pmt(dictVar):
>>>>> >     print 'isPair:%05s, isDict:%05s, isTuple:%05s  =>  %s' %
>>>>> > (pmt.is_pair(dictVar), pmt.is_dict(dictVar), pmt.is_tuple(dictVar),
>>>>> dictVar)
>>>>> >
>>>>> > print 'DICT'
>>>>> >
>>>>> > d = pmt.make_dict()
>>>>> > print_pmt(d)
>>>>> >
>>>>> > d = pmt.dict_add(d, pmt.intern('a'), pmt.intern('b'))
>>>>> > print_pmt(d)
>>>>> >
>>>>> > d = pmt.dict_add(d, pmt.intern('c'), pmt.intern('d'))
>>>>> > print_pmt(d)
>>>>> >
>>>>> > d = pmt.dict_add(d, pmt.intern('e'), pmt.intern('f'))
>>>>> > print_pmt(d)
>>>>> >
>>>>> > print '\nCONS'
>>>>> >
>>>>> > p = pmt.cons(pmt.make_dict(), pmt.make_u8vector(0,0))
>>>>> > print_pmt(p)
>>>>> >
>>>>> > [/code]
>>>>> >
>>>>> > Run that and you'll see what I consider strange behavior.  The
>>>>> values of
>>>>> > is_pair and is_dict to not match what is expected.  Is that by
>>>>> design?
>>>>> > If so, why?
>>>>> >
>>>>> > ((a . b)) is not a pair...  It's a single element dictionary
>>>>> > ((c . d) (a . b)) i can sorta see this being a pair, but it wasn't
>>>>> > created that way
>>>>> > ((e . f) (c . d) (a . b)) definitely not a pair as it's 3 elements
>>>>> >
>>>>> > (() . #[]) don't dictionaries have to be nested?
>>>>> >
>>>>> >
>>>>> > Thanks!
>>>>> >
>>>>> >
>>>>> > _______________________________________________
>>>>> > Discuss-gnuradio mailing list
>>>>> > Discuss-gnuradio@gnu.org
>>>>> > https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>>>>> >
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Discuss-gnuradio mailing list
>>>>> Discuss-gnuradio@gnu.org
>>>>> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>>>>>
>>>>
>>>>
>>>
>>>
>>> _______________________________________________
>>> Discuss-gnuradio mailing 
>>> listDiscuss-gnuradio@gnu.orghttps://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>>>
>>>
>>>
>>> _______________________________________________
>>> Discuss-gnuradio mailing list
>>> Discuss-gnuradio@gnu.org
>>> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>>>
>>>
>>
>
_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to