discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Discuss-gnuradio] PMT Oddities


From: Martin Braun
Subject: Re: [Discuss-gnuradio] PMT Oddities
Date: Tue, 22 Nov 2016 14:28:20 -0800
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0

I remember writing this (UHD code), and at the time, I thought I could
fix PMTs first, but then decided it was too invasive. I would have to go
over the exercise again to tell you exactly why.

You're right, it feels like a bug. Probably, this was not by design, but
is an artefact of how PMT types have their roots in LISPy types, which
have pairs, but not dictionaries as such.

Cheers,
M

On 11/22/2016 02:18 PM, 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 <address@hidden
> <mailto:address@hidden>> 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
>     <address@hidden <mailto:address@hidden>> wrote:
> 
>         Dave,
> 
>         pairs pass is_dict(), which is possibly the root cause here. See
>         also:
>         
> https://github.com/gnuradio/gnuradio/blob/31b28f0cf4694378b26617616d08b4082668962f/gr-uhd/lib/usrp_block_impl.cc#L487-L494
>         
> <https://github.com/gnuradio/gnuradio/blob/31b28f0cf4694378b26617616d08b4082668962f/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
>         > address@hidden <mailto:address@hidden>
>         > https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>         <https://lists.gnu.org/mailman/listinfo/discuss-gnuradio>
>         >
> 
> 
>         _______________________________________________
>         Discuss-gnuradio mailing list
>         address@hidden <mailto:address@hidden>
>         https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>         <https://lists.gnu.org/mailman/listinfo/discuss-gnuradio>
> 
> 
> 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]